概要
python2.xでプログラムを実行した際に、日本語CSV出力時において、下記のようなエラーが出た場合の対処法を記載します。
UnicodeEncodeError: 'ascii' codec can't encode character u'\uxxxxx' in position 4: ordinal not in range(128)
pythonで日本語を使っていると出てくるエラーになりますので、確認していければと思います。
原因
pythonでは、ANSI_X3.4-1968というエンコード方式が使われているのですが、ASCII型に変換される際に、日本語は、ASCII文字に対応していないため、エラーが発生してしまいます。そのため、UTF-8に変換する必要があります。
対応方法
unicodecsvを導入することで、解決することができます。
pip install で、unicodecsvをインストールします。
pip install unicodecsv
import で、unicodescvを記載します。
import unicodecsv as csv
csv出力時に、uft-8を明示的に指定します。
writer = csv.writer(file, lineterminator='\n', encoding='utf-8')
このようにすることで、utf-8で保存することができました。