Python 文字コード、エンコーディングについて

プログラムを記述する際の文字コード、プログラム中でデータを扱う際の文字コード、シェル(Windows ならコマンドプロンプト)に表示する(標準出力)際の文字コード、などなど考慮するポイントが複数あるのだということがわかった。

仕事で feedparser を使って RSS フィードをパースしてごにょごにょしようとしていて、コマンドプロンプトに表示はできるけれどリダイレクトでファイルに書き込もうとしたらエラーが出る、という状態だった。

ひとまず、コマンドプロンプト文字コードutf-8 に変更して、スクリプトの方もエンコーディングを指定するとちゃんとファイルに書き出せたので一件落着。奥が深いぜ。

コマンドプロンプト文字コードを変更
chcp 65001

デフォルトは 932(shift_jis) になっている

Pythonエンコーディングの指定
print fdp.feed.title

↑こうなっていたのを

print fdp.feed.title.encode('utf8')

↑こう変更した