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

标签 python string encoding python-2.x python-internals

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/

相关文章:

python - 覆盖 ModelForm 中的元数据

python - 使用 Python 将表加载到 AWS RDS Postgres 需要很长时间

python - 使用 python(2.7) 请求的 SSL 错误

C++ 2440 错误 - 编译器认为字符串是 const char?

java - 比较 bytes[] 和 String.getBytes()

java - 在 Java 中生成 UTF-8 编码的 XML

grails - Grails:BootStrap.groovy类的编码

python - 使用 Conda 安装 OpenCV

mysql - 在 MySQL 的单个单元格中存储多个值

java - 从回调中返回字符串 - Java