Python chardet模块,在默认编码为utf-8的情况下,检测中文编码错误,不是utf-8(应该是utf-8的)
# -*- coding: utf8 -*-
import os
import chardet
import sys
reload(sys)
sys.setdefaultencoding("utf8")
if __name__ == '__main__':
print sys.getdefaultencoding()
temp = u"滴"
temp = temp.encode("utf-8")
print chardet.detect(temp)
print temp
运行结果:
utf8
{'confidence': 0.73, 'language': '', 'encoding': 'ISO-8859-1'}
滴
Process finished with exit code 0
从代码中可以看出
1.设置了文件编码
2.设置了字符串默认编码
但是当我们对单个的unicode编码的中文文字进行encode("utf-8")时,并没有转化成我们想要的utf-8编码,而是ISO-8859-1。
然而,有趣的是当我们操作两个及两个以上的中文文字时,就不会出现这个问题。代码如下:
# -*- coding: utf8 -*-
import os
import chardet
import sys
reload(sys)
sys.setdefaultencoding("utf8")
if __name__ == '__main__':
print sys.getdefaultencoding()
temp = u"滴滴"
temp = temp.encode("utf-8")
print chardet.detect(temp)
print temp
运行结果:
utf8
{'confidence': 0.7525, 'language': '', 'encoding': 'utf-8'}
滴滴
Process finished with exit code 0
记录一下这个问题。哪个大佬解释一下。