我正在寫一個應用程序,它需要一些大量的文本作爲輸入,可以用任何字符編碼,並且我想將它全部保存在UTF-8中。我不會收到或不能信任用數據定義的字符編碼(如果有的話)。在Python中進行編碼檢測,是否使用chardet庫?
我已經使用Pythons庫chardet來檢測原始字符編碼http://pypi.python.org/pypi/chardet,但最近遇到了一些問題,我注意到它不支持斯堪的納維亞編碼(例如iso-8859-1)。 除此之外,它需要大量的時間/ CPU /內存來獲得結果。對於2MB文本文件〜40s。
我嘗試了使用標準的Linux文件
file -bi name.txt
並與我的所有文件到目前爲止,它爲我提供了100%的結果。這對於一個2MB文件約0.1秒。它也支持斯堪的納維亞字符編碼。
所以,我猜測使用文件的優勢很明顯。有什麼缺點?我錯過了什麼嗎?
如果它是100%準確的,那麼我想知道爲什麼有人不使用'file'使用相同的規則來實現它(或'chardet')... - 你試過一個'file' vs'chardet比較大量的測試數據? –
FWIW,ISO-8859-1(及其修訂版,-15)不僅僅是斯堪的納維亞語,它還用於許多其他基於拉丁語的腳本。如果輸入是「主要是ASCII」而不是UTF-8,ISO-8859-1是一個很好的猜測。 http://en.wikipedia.org/wiki/ISO/IEC_8859#The_Parts_of_ISO.2FIEC_8859 – Thomas
喬恩,我完全同意。因此我的問題。 我無法訪問足夠的數據,這將使這種方法具有統計顯着性,因此不幸的是,您的問題的答案是否定的。 – Niklas9