如何测试编码类型python2.7?

2024-10-02 08:21:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决一个问题,我有关于外国字符(任何和所有字母)。我的脚本(2.7python)以unicode-json的形式接收字符(英文字母和其他外来字符的混合),并将其发送到数据库插入函数,以便使用psycopg2插入到某些表中。这是一个完美的脚本,但一旦不是一个服务(外国字符被插入作为废话)。这个unicoding/encoding/decoding的东西太混乱了!我正试图遵循这个(https://www.pythoncentral.io/python-unicode-encode-decode-strings-python-2x/),希望能准确地理解我正在接收什么,然后发送到数据库,但在我看来,我需要知道在不同阶段的编码是什么。如何获得编码类型?对不起,这一定是这么简单,但我不知道如何获得该信息,和其他人的问题在这件事上还没有得到确切的回答,在我看来。这不会那么难以捉摸的。请帮忙。你知道吗

按要求添加信息。。。 -是的,我想搬到3.x,但现在不行。 -目前主要是我的测试,它还没有为用户生活。我正在一台Windows2012服务器AWS机器上进行测试和开发,该服务托管在一台类似的机器上。 是的-你怎么找到语言环境信息?你知道吗

我已经用前端开发人员(js)做了一些测试,他说json输入是以url编码的形式出现的。。。当我输入它时,它只是说unicode。思想??你知道吗


Tags: 函数脚本机器信息数据库json编码字母
1条回答
网友
1楼 · 发布于 2024-10-02 08:21:19

不要依赖默认的系统编码。相反,总是自己设置:

    # read in a string (a bunch of bytes the encoding of which you should know)
    str = sys.stdin.read();
    # decode the bytes into a unicode string
    u = unicode.decode(str, encoding='ISO-8859-1', errors=replace);
    # do stuff with the string
    # ...
    # always operate on unicode stuff inside your program.
    # make a 'unicode sandwhich'.
    # ...
    # encode the bytes in preparation for writing them out
    out = unicode.encode(u, encoding='UTF-8')
    # great, now you have bytes you can just write out
    with open('myfile.txt', 'wb') as f:
        rb.write(out)

注意,我对整个编码进行了硬编码。你知道吗

但是如果你不知道输入的编码呢?好吧,那是个问题。You need to know that。但我也明白unicode可能会很痛苦,python社区的一个家伙告诉你how to stop the pain (video)。你知道吗

注意,python3的一大变化是更好的unicode支持。与使用unicode包和混乱的py2str类型不同,在python 3中str类型正是python 2的unicode类型,您可以在更方便的地方指定编码:

with open('myfile.txt', 'w', encoding=UTF-8, errors='ignore') as f:
   # ...

相关问题 更多 >

    热门问题