python编码问题

时间:2023-11-23 13:04:20
SCII编码是1个字节,而Unicode编码(汉字)通常是2个字节。一个字节8位(bit)
如果统一成Unicode编码,英文字母就会占用2个字节,造成空间浪费。从而出现了utf8可变编码,utf8编码中。英文字母编码占一个字节,汉字通常3个字节。如果传输的文本汉字和英文混用,使用utf8能节省空间。
在计算机内存中使用Unicode编码,需要保存为文件或者传输就装换为utf8编码。
浏览网页的时候,服务器会把Unicode内容装换为utf8在传输到浏览器
1 Python提供了ord()和chr()函数,可以把字母和对应的ASCII码相互转换
 >>> ord('A')
65
>>> chr(65)
'A'

2 Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:

 >>> print u'中文'
中文
>>> u'中文'
u'\u4e2d\u6587'
>>> print u'\u4e2d\u6587'
中文
u''后面的内容是16进制的Unicode编码 可以看到Unicode一个汉字2个字节,u'中文'占用了4个字节
>>> u'中文'.encode('utf-8')
'\xe4\xb8\xad\xe6\x96\x87'
转换为utf8编码 可以看到一个汉字占用了3个字节

3 反过来,把UTF-8编码表示的字符串'xxx'转换为Unicode字符串u'xxx'用decode('utf-8')方法

 >>> print '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
中文