Python 字符编解码器

2022-08-10 14:07:33 浏览数 (1)

“字符串”是个相当简单的概念:一个字符串是一个字符序列。本文记录 Python 中字符串相关内容。

基本的编解码器

  • Python 自带了超过 100 种编解码器(codec, encoder/decoder),用于在 文本和字节之间相互转换。每个编解码器都有一个名称,如 ‘utf_8’, 而且经常有几个别名,如 ‘utf8’、‘utf-8’ 和 ‘U8’。这些名称可以传 给 open()、str.encode()、bytes.decode() 等函数的 encoding 参数。
  • 例如: 使用 3 个编解码器编码字符串“El Niño”,得到的字节序 列差异很大
代码语言:javascript复制
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年人民邮电出版社出版)

0 人点赞