パスワードを忘れた? アカウント作成
33263 journal

greenteaの日記: [python]機種依存文字とUnicodeDecodeError

日記 by greentea

PythonでASCII以外の文字コードが使われている文字列を扱うときは、いったんcodecs.getWriter()やらcodecs.decode()やらでUnicodeに変換すると便利だが、
適切な文字コードを選択している*つもり*にも関わらず、
codecs.getWriter('shift_jis')やらcodecs.getWriter('euc-jp')が
UnicodeDecodeErrorを吐いて困った。

調べてみると、いわゆる機種依存文字が使われていてデコードに失敗している模様。

早い話、機種依存文字が使われている文字列は、Shift_JIS、euc-jpでもない何かでエンコードされているわけである。
そういうわけで、対策法は、それ用の別の文字コードでデコードしましょう。

例えば
Shift_JIS を cp932 にしてみたり
euc-jp を euc_jisx0213 にしてみたり

環境によって違うだろうが、うちでは
/usr/lib/python2.5/encodings
にあるファイル名から存在する文字コードを推測できた。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

物事のやり方は一つではない -- Perlな人

読み込み中...