admin管理员组

文章数量:1611205

python中文编码问题

# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
import chardet

a = '子系统'
print a, len(a), chardet.detect(a)


b = '子系统'.decode('utf-8').encode('gb2312')
print b, len(b), chardet.detect(b)

c = u'子系统'
print c, len(c)

d = '子系统'.decode('utf-8').encode('gbk')
print d, len(d), chardet.detect(d)
瀛愮郴缁?9 {'confidence': 0.87625, 'language': '', 'encoding': 'utf-8'}
子系统 6 {'confidence': 0.6826397542769941, 'language': 'Russian', 'encoding': 'KOI8-R'}
子系统 3
子系统 6 {'confidence': 0.6826397542769941, 'language': 'Russian', 'encoding': 'KOI8-R'}

由此可知,从返回的字节的长度来说:
一个中文字  utf-8编码  占 3个字节
一个中文字  gb2312编码  占 2个字节
一个中文字  unicode编码  占 1个字节
一个中文字  gbk编码  占 2个字节
 所以gbk和gb2312 比较难区分,这个需要自己在遇到编码问题的时候,自己尝试吧。






本文标签: CodecDecodeUnicodeDecodeErrorbyteInvalid