2010年1月1日金曜日

Pythonの文字列のエンコードとデコード

Python3.0からはすべてのテキストがunicodeです。Python2.xではuの前置きでunicodeになります。

エンコード:unicode型 → str型に変換

unicode型の文字列をShift_JISにエンコード
u’あああ’.encode(‘Shift_JIS’)

デコード:str型 → unicode型に変換

str型の文字列をunicode型にデコード
’あああ’.decode(‘Shift_JIS’)
→ 文字コードを指定しない場合はデフォルトエンコーディングでデコードされる

s.decode()
unicode(s)

デコード前のエンコーディングを指定
s.decode(‘utf-8’)
unicode(s, ‘utf-8’)

メールで使うISO-2022-JP(JIS)に変換する場合、機種依存文字がエラーとなる場合があります。そのためにreplaceかignoreを使うとよいです。

replace
return s.encode(‘ISO-2022-JP’, ‘replace’)

replaceを指定すると変換に失敗した場合、encodeの場合は「?」に、decodeの場合は「REPLACEMENT CHARACTER(u”\uFFFD”)に置き換えられます。

ignore
return s.encode(‘ISO-2022-JP’, ‘ignore’)

ignoreを指定すると変換出来ない文字列が無視されます。

0 件のコメント:

コメントを投稿