关于Python的字节与字符,在处理中文文档时候经常涉及到,下面先从表象来进行分析。打开Python自带的 idle,查看默认编码:
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
现在有一个unicode中文字符串“中文字符”,分别查看其utf8及gbk编码:
>>> _str = u"中文字符"
>>> print(_str, '\n', _str.encode('utf8'), '\n', _str.encode('gbk'))
中文字符
b'\xe4\xb8\xad\xe6\x96\x87\xe5\xad\x97\xe7\xac\xa6'
b'\xd6\xd0\xce\xc4\xd7\xd6\xb7\xfb'
可以看出,原来的unicode字符串编码成utf8或者gbk格式字节,然后分别求长度,可以发现字符串长度为 4,其utf8字节编码长 12,即一个字符占用 3 个字节,gbk字节编码长为 8,即一个中文字符占用 2 个字节,这也就能解释为什么utf8可以编码更多的中文字符。