String文字列を他の文字コードに変換しようとしてハマった話(Python2)

今回はPython2でString文字列を他の文字コードに変換する方法について、自らのハマった経験を踏まえご紹介いたします。



String文字列を他の文字コードに変換しようとしてハマった話(Python2)

Python3だとでString文字列を他の文字コードに変更したいときに、素直にString文字列をencode(‘shift-jis’)などとすれば文字コードを変換できるのですが、Python2だとそうもいきません。

Python2だとUnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe3 in position 0: ordinal not in range(128)というエラーが発生してしまいます。

次の例はPython2の対話型シェルでString文字列をShift JISの文字コードに変換しようとした結果です。

ちなみにPython3だとうまくいきます。
下記のコードはPython3の場合のお試しコードです。

Python3の場合の上記のコードの実行結果はこちらです。

では、Python2でString型の文字列をShift JISの文字コードに変換するためにはどうすれば良いのかというと、結論としてdecode(‘utf-8’)を間に挟む必要があります。
上記の例では、
testString = testString.decode(‘utf-8’).encode(‘shift-jis’)
とする必要があります。

以下、対話型シェルでいろいろ試してみた結果です。

上記のようにうまくいっていることが分かると思います。

終わりに

今回はPython2でString文字列を他の文字コードに変換する方法についてご紹介いたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いいたします。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






Python

Posted by ちこ