注目キーワード
  1. 技術
  2. 広告
  3. IDFA
  4. PHP
  5. WordPress

UnicodeEncodeError: ‘ascii’ codec can’t encode character と出たときの対処法

概要

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で保存することができました。