关于Python的字节与字符,在处理中文文档时候经常涉及到,下面先从表象来进行分析。打开Python自带的 idle,查看默认编码:

    1. >>> import sys
    2. >>> sys.getdefaultencoding()
    3. 'utf-8'

    现在有一个unicode中文字符串“中文字符”,分别查看其utf8及gbk编码:

    1. >>> _str = u"中文字符"
    2. >>> print(_str, '\n', _str.encode('utf8'), '\n', _str.encode('gbk'))
    3. 中文字符
    4. b'\xe4\xb8\xad\xe6\x96\x87\xe5\xad\x97\xe7\xac\xa6'
    5. b'\xd6\xd0\xce\xc4\xd7\xd6\xb7\xfb'

    可以看出,原来的unicode字符串编码成utf8或者gbk格式字节,然后分别求长度,可以发现字符串长度为 4,其utf8字节编码长 12,即一个字符占用 3 个字节,gbk字节编码长为 8,即一个中文字符占用 2 个字节,这也就能解释为什么utf8可以编码更多的中文字符。