Python chardet模块,在默认编码为utf-8的情况下,检测中文编码错误,不是utf-8(应该是utf-8的)

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

记录一下这个问题。哪个大佬解释一下。

你可能感兴趣的:(Python杂项,python)