我今天读了python PEP100。在“Unicode 默认编码”部分中,它指的是“Unicode 实现必须对传递给它的 8 位字符串的编码进行一些假设以进行强制,以及在没有时将编码作为默认值将 Unicode 转换为字符串给出了特定的编码。
我的问题是,“8 位字符串”是什么意思?是ASCII的意思吗?
不,ASCII是 7 位编码。大多数文本编码(包括 UTF-8 和 ISO-8859)都是 8 位编码。
一般来说,基本 ASCII 字符集之外的任何内容都需要超过 7 位来编码。因此,在处理国际数据时,您通常会处理每个编码字符可以使用多个字节的编码。当你尝试组合 Unicode 和字节字符串类型时,Python 会自动尝试将字节字符串解码为 Unicode,并且默认编码(在 python 2 中)是 ASCII。这是 Python 中 UnicodeDecodeError 异常的常见来源。
在继续之前,您真的想阅读 Unicode 和文本编码。我可以推荐:
UTF-8
用于支持大范围的字符。在 UTF-8 中,最多可以使用 4 个字节来表示单个字符。
ASCII
仅定义 128 个字符。所以只有7
位。但通常以 8 位/字符存储。RS232(旧串行通信)可用于 7 位字节