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

2019年12月31日

今回は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でのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Python2

Posted by ちこ