Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python Shift-JISをUTF-8に変換する

Google Maps API関連ではないです。
出力されたログを漁っていると、いまだにShift-JISを使用している人達がいます。
エディタを調整するのも面倒なので、python文字コードを変換してしまうことにしました。

1. Python 2系

with open('sjis_file.txt') as sf:
    with open('utf8_file.txt', 'w') as uf:
        for line in sf:
            uf.write(unicode(line, 'shift-jis').encode('utf-8'))

これで、Shift-JISで書かれたsjis_file.txtをUTF-8に変換できます。
2.7で動作確認済みです。

2. Python 3系

3系では、codecs を使って文字コードを指定してファイルの読み書きができます。

import codecs

sf = codecs.open('sjis_file.txt', 'r', encoding='shift-jis')
uf = codecs.open('utf8_file.txt', 'w', encoding='utf-8')
for line in sf:
    uf.write(line)
sf.close()
uf.close()

3.7で動作確認済みです。