【1.39】字符编码

>>> u'你好'
u'\u4f60\u597d'
>>> u'你好'.encode('utf8')
'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> u'你好'.encode('gbk')
'\xc4\xe3\xba\xc3'
>>> u'你好'.encode('utf8').decode('gbk')
u'\u6d63\u72b2\u30bd'
>>> print u'你好'.encode('utf8').decode('gbk')
浣犲ソ

如上面的代码所示, "你好"两个汉字字符的unicode分别为4f60和597d,

utf-8编码后占6个字节,   一个汉字 三个字节

而gbk编码后占4个字节. 一个汉字 两个字节


如果用utf8编码后错误地用gbk来解码,

就会得到3个unicode码点,分别表示字符,;

而如果用gbk编码后

错误地用utf8来解码, 则在解码第二个字符时无法凑够3个字节, 因此会得到未知的结果, 甚至会因为内存越界访问引起程序异常.

posted @ 2016-03-29 19:07  科学小怪癖  阅读(81)  评论(0)    收藏  举报