一尘不染

Python 2.x中的字符串使用哪种编码?

python

在python 2.x中用于编码字符串的默认编码是什么?我读过有两种可能的方法来声明一个字符串。

string = 'this is a string'
unicode_string = u'this is a unicode string'

第二个字符串是Unicode。第一个字符串的编码是什么?


阅读 187

收藏
2021-01-20

共1个答案

一尘不染

按照Python的默认/隐式字符串编码和转换(简洁地引用其Py2部分,以最大程度地减少重复):

实际上,Python 2中有多个独立的“默认”字符串编码, 供其功能的不同部分使用。

  • 解析代码和字符串文字:

    • str 从文字中获取-将包含文件中的原始字节,不进行转码
    • unicode从文字中获取-文件中的字节以decode“ d”加上文件的“源编码”,默认为ascii
    • 随着unicode_literalsfuture,文件中的所有文字都被视为Unicode文字
    • 转码/类型转换:

    • str<->unicode类型转换和encode/不decode带参数完成sys.getdefaultencoding()

    • 这是ascii几乎总是,所以任何国家的字符将会导致UnicodeError
    • str只能是decode“d和unicode- encode” d。否则尝试将涉及隐式类型转换(具有上述结果)
    • I / O,包括printing:

    • unicode-如果已设置,则为encode‘d’ <file>.encoding,否则将隐式转换为str(具有上述结果)

    • str-将原始字节写入流,不进行任何代码转换。对于国家字符,终端将根据其语言环境设置显示不同的字形。
2021-01-20