■pythonの文字コード
pythonの文字はファイルに出力する場合は常にstr型で出力。 出力しないと文字化けする. ターミナルの場合、pythonが標準出力のエンコーディングを 認識して、unicode型でも pythonが自動認識して 文字化けしないよう出力してくれるが、ファイルの場合変換する文字コードがわからないため文字化けが 発生する可能性がある。 unicodeは「文字コード」(バイト表現と文字の対応関係)ではない Python の unicode 型は「文字コード」にとらわれない型で、CPU やメモリ上で用いられる Python の str 型は「文字コード」に則ったバイト列で、出入力時にはこれを用いる ------------------------------------------------- unicode型.decode() ==> str型 str型.encode() ==> unicode型 ------------------------------------------------- 例) s1 = '日本語文字列(s1)' print s1 # 文字化けしない (str型) print s1.decode('utf-8') # str -> unicodeに変換. UnicodeErrorが発生する print type(s1) # str s2 = u'日本語文字列(s2)' print s2 # unicodeを出力. UnicodeErrorが発生する print s2.encode('utf-8') # 文字化けしない (unicode -> str) print type(s2) # unicode type関数で確認すると、バイト文字列はstr型/ユニコード文字列はunicode型であることが分かる。 >>> type('a') Out[5]: str >>> type(u'a') Out[6]: unicode