“字符串”是个相当简单的概念:一个字符串是一个字符序列。本文记录 Python 中字符串相关内容。
基本的编解码器
- Python 自带了超过 100 种编解码器(codec, encoder/decoder),用于在 文本和字节之间相互转换。每个编解码器都有一个名称,如 ‘utf_8’, 而且经常有几个别名,如 ‘utf8’、‘utf-8’ 和 ‘U8’。这些名称可以传 给 open()、str.encode()、bytes.decode() 等函数的 encoding 参数。
- 例如: 使用 3 个编解码器编码字符串“El Niño”,得到的字节序 列差异很大
for codec in ['latin_1', 'utf_8', 'utf_16']:
print(codec, 'El Niño'.encode(codec), sep='t')
-->
latin_1 b'El Nixf1o'
utf_8 b'El Nixc3xb1o'
utf_16 b'xffxfeEx00lx00 x00Nx00ix00xf1x00ox00'
- 下图展示了不同编解码器对“A”和高音谱号等字符编码后得到的字节 序列。注意,后 3 种是可变长度的多字节编码。
- 图 中的星号表明,某些编码(如 ASCII 和多字节的 GB2312)不能 表示所有 Unicode 字符。然而,UTF 编码的设计目的就是处理每一个 Unicode 码位。
- 编码简介:
参考资料
- 流畅的Python(2017年人民邮电出版社出版)