Python编码问题
Python编码的一点小问题
unicode
是一个字符集,它包含了(理论上)所有可能出现的文字和符号,每个符号都有一个对应的unicode值,叫做码点,对特定字符来说,这个码点是唯一,固定的utf-xx
(比如utf-8,utf-16,utf-32等)是unicode
码点的一种特定的编码方式,因为码点最终要以某种形式存在于内存或者文件中,所以必须指定一种编码方式来表示某个码点
同一个码点,用不同的编码方式,得到的结果是不同的ASCII
编码和Unicode
编码的区别:ASCII
编码是1个字节,而Unicode
编码通常是2个字节。而utf-16跟utf-8是平级的概念——都是Unicode
的某种编码方式gbk
,规定了(理论上)每个汉字在内存或者文件中的编码方式
而Unicode可以认为只是字符集,不限定编码规则
只是gbk
和utf-8
的前256个字符,都保持跟ASCII
兼容
Python 2.x里
string decode –> unicode string (utf16)
unicode string encode –> string
Python 3.x里
string (utf8) encode –> byte string
byte string decode –> string