如何使用python将ascii字符更改为utf-8?

时间:2014-05-22 14:11:04

标签: python python-3.x encoding utf-8 ascii

A9代表ascii表中的©,如何将ascii编码中的A9更改为python中的utf-8编码?将asii编码更改为utf-8的规则是什么?

1 个答案:

答案 0 :(得分:11)

任何给定的ASCII码点等于该码点的UTF-8编码。这是故意的。

但是,© 不是ASCII码点,它是 Latin-1 代码点。 ASCII是一个7位标准,代码点从00到7F运行。除此之外,Latin 1 (ISO-8859-1)从U + 0080运行到U + 00FF,每个代码点需要2个UTF-8字节进行编码。

只需从Latin 1解码,编码为UTF-8:

>>> b'\xA9'.decode('latin1').encode('utf8')
b'\xc2\xa9'

关于'规则' UTF-8的最佳解释在UTF-8 Wikipedia article

对于其值适合单个字节的Latin-1代码点,规则很简单:前2位(1011)构成第一个字节的低两位,与110000一起作为高位。代码点的低6位被赋予10作为高位。

A910101001然后变为11000010 10101001C2 A9

       10 101001   Latin-1 codepoint A9
       .. ------
       /     \
11000010 10101001  UTF-8 encoding C2 A9
      ..   ------