在Python中使用编码检测,是否使用chardet库?

Nik*_*as9 10 python encoding chardet

我正在编写一个应用程序,它需要大量的文本作为输入,可以是任何字符编码,我想以UTF-8保存它们.我不会接收或不信任随数据定义的字符编码(如果有的话).

我有一段时间使用Pythons库chardet检测原始字符编码http://pypi.python.org/pypi/chardet,但最近遇到了一些问题,我发现它不支持斯堪的纳维亚语编码(例如ISO-8859-1).除此之外,获取结果需要大量的时间/ CPU/mem.对于2MB的文本文件,大约40秒.

我试过使用标准的Linux文件

file -bi name.txt
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的所有文件都为我提供了100%的结果.对于2MB的文件,这个约为0.1s.它也支持斯堪的纳维亚字符编码.

所以,我猜使用文件的优势很明显.有什么缺点?我错过了什么吗?

Gen*_*ari 4

由于不完全标准的编码,旧的 MS-DOS 和 Windows 格式的文件可以被检测为未知 8 位而不是 ISO-8859-X。相反,Chardet 将进行有根据的猜测,报告置信值。

http://www.faqs.org/faqs/internationalization/iso-8859-1-charset/

如果您不会处理旧的、异国情调的、不合标准的文本文件,我认为您可以file -i毫无问题地使用。