python 2.x 中用于编码字符串的默认编码是什么?我读到有两种可能的方法来声明一个字符串。
string = 'this is a string'
unicode_string = u'this is a unicode string'
第二个字符串是 Unicode。 第一个字符串的编码是什么?
最佳答案
根据 Python default/implicit string encodings and conversions (简明扼要地背诵它的 Py2 部分,以尽量减少重复):
Python 2 中实际上有多个独立的“默认”字符串编码,用于其功能的不同部分。
解析代码和字符串文字:
-
str
来自文字——将包含文件中的原始字节,不进行转码 -
unicode
来自文字——来自文件的字节是decode
'd 与文件的 "source encoding"默认为ascii
- 与
unicode_literals
future , 文件中的所有文字都被视为 Unicode 文字
-
转码/类型转换:
-
str<->unicode
类型转换和encode
/decode
没有参数是用sys.getdefaultencoding()
完成的- 这是
ascii
几乎总是如此,所以任何国家字符都会导致UnicodeError
- 这是
-
str
只能是decode
'd 和unicode
--encode
'd。否则尝试将涉及隐式类型转换(具有上述结果)
-
I/O,包括
print
ing:-
unicode
--encode
用<file>.encoding
如果设置,否则隐式转换为str
(具有上述结果) -
str
-- 原始字节写入流,不进行转码。对于国家字符,终端将根据其区域设置显示不同的字形。
-
关于python - Python 2.x 中的字符串使用哪种编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49941052/