Entries

Python 文字コードの判定と変換

以外と知られていない? Python で文字コードを自動変換するロジックです。特別なモジュールはいりません。

適当な文字コードで str から unicode オブジェクトを生成(decode)します。 try して exception なら次の文字コードで変換を試みるという手順です。最後に unicode オブジェクトから指定の文字コードに変換(encode)した str を return します。unicode オブジェクトの生成に全て失敗したら
そのまま return します。


import codecs

def conv_encoding(data, to_enc="utf_8"):
"""
stringのエンコーディングを変換する
@param ``data'' str object.
@param ``to_enc'' specified convert encoding.
@return str object.
"""
lookup = ('utf_8', 'euc_jp', 'euc_jis_2004', 'euc_jisx0213',
'shift_jis', 'shift_jis_2004','shift_jisx0213',
'iso2022jp', 'iso2022_jp_1', 'iso2022_jp_2', 'iso2022_jp_3',
'iso2022_jp_ext','latin_1', 'ascii')
for encoding in lookup:
try:
data = data.decode(encoding)
break
except:
pass
if isinstance(data, unicode):
return data.encode(to_enc)
else:
return data


lookup をアプリケーションに合せて変更すると無駄な計算を除外できます。使用可能な文字コード(codec)は 4.9.2 標準エンコーディング Python ライブラリリファレンスに一覧があります。

Pythonの文字コード変換

にほんブログ村 IT技術ブログへ

この記事にトラックバックする(FC2ブログユーザー)
http://speirs.blog17.fc2.com/tb.php/4-9c482201

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する