Hav*_*day 5 python character-encoding
我一直在玩 python 内置函数,并得到了一些令人困惑的(对我来说)结果。
看看这段代码:
>>> 'ü'.encode()
b'\xc3\xbc'
Run Code Online (Sandbox Code Playgroud)
为什么\xc3\xbc返回(十进制的 195 和 188)?如果您查看ascii 表,我们会看到它ü是第 129 个字符。或者,如果您查看此处,我们会看到这ü是第 252 个 Unicode 字符,这就是您从中得到的
>>> ord('ü')
252
Run Code Online (Sandbox Code Playgroud)
那么来自哪里\xc3\xbc,为什么它被分成两个字节?当你 decode: 时b'\xc3\xbc'.decode(),它怎么知道这两个字节是一个字符?
在您正在查看的表格上,您正在查看标题为“扩展 ASCII”的部分,在ISO/IEC 8859或 latin1 中更为常见。ASCII 作为字符集,定义了 0 到 127 之间的 7 位字符。latin1 定义了其他 128 个单字节字符,是 ASCII 的扩展。Python 使用 UTF-8,它扩展了 ASCII(因此与它兼容)但与 latin1 不兼容。
字符 ü 具有 Unicode 代码点 0xFC(十进制为 252),并且在使用 UTF-8 时,使用两个字符进行编码。
许多在线 ASCII 表都弄错了。将代码点称为 128 到 255 个 ASCII 字符是不准确的,因为 ASCII 没有声称为这些代码点分配任何值。
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |