0%

Python2和Python3的编码问题

Python2和Python3的编码问题

1.编解码

1.1Unicode编码

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

1.2编码方式

字符集:为每一个字符分配一个唯一的 ID(码位 / 码点 / Code Point)。

编码规则:将码位转换为字节序列的规则(编码/解码可以理解为 加密/解密的过程)。

为了将Unicode字符转成bytes,需要进行编码,常见的编码方案有:utf-16, utf-32, ucs-2, ucs-4, utf-8

2.Python中的编解码

1.Python2

  1. str:是比特序列
  2. Unicode:code points序列
1
2
3
4
5
6
7
>>> my_string = "Hello World"
>>> type(my_string)
<type 'str'>

>>> my_unicode = u"Hi\u2119\u01b4\u2602\u210c\xf8\u1f24"
>>> type(my_unicode)
<type 'unicode'>

(1).eccode()和.decode()

unicode.encode()→bytes//encode函数就是将unicode转换成bytes

bytes.decode()→unicode//对应的解码过程就是将bytes转成unicode