文字コード判定

文字コードの変換はpythonのバージョンが2.3以降ならできる。

>>> unicode('何か', 'shift_jis').encode('euc-jp')
'\xb2\xbf\xa4\xab'

判定はどうすればいいか。pykfかchardetが使えそう。

pykf

ダウンロード先が見つからない。
Internet Archiveからダウンロードできた。
http://web.archive.org/web/*/www.gembook.jp/tsum/page.pys?wiki=PyKf

python setup.py install
Visual Studio .NET 2003でコンパイル可能。

import pykf
>>> pykf.guess('abc') == pykf.ASCII
True
>>> pykf.guess('まいうー') == pykf.SJIS
True
>>> pykf.guess('まいうー') == pykf.EUC
False

chardet

import chardet
>>> chardet.detect('ぬへっほー')
{'confidence': 0.98999999999999999, 'encoding': 'SHIFT_JIS'}

全部pythonで書かれていて、世界中の文字コードの判定をやってくれるので遅い。

>>> chardet.detect('@@@@@@')
{'confidence': 0.0, 'encoding': None}

これは判定失敗?