[文字コード] UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 [Python]


下記のサイトで書かれていたPythonのプログラムを対話モードで実行すると、
UnicodeDecodeErrorが発生して解決したのでメモ。

PythonでAmazon Product Advertising APIを使う – 人工知能に関する断想録

amazon.pyを使って”Amazonクラスを使って「人工知能」というキーワードで本を検索してみます。”以下のプログラムを実行すると下記のエラーが返ってきました。

xml = amazon.itemSearch("Books", Keywords="人工知能", ItemPage="1")  # 本

■ エラー内容

Traceback (most recent call last):
File ““, line 1, in
File “amazon.py”, line 44, in itemSearch
return self.sendRequest(params)
File “amazon.py”, line 76, in sendRequest
self.url = self.buildURL(params)
File “amazon.py”, line 58, in buildURL
pair = “%s=%s” % (p[0], urllib2.quote(p[1].encode(“utf-8”)))
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)

エラーの原因を調べてみると、文字コードの扱いについてのエラーでした。

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe4 in position 0: ordinal not in range(128)

ここを読んで解決しました。unicodeの扱いが詳しく書かれていて勉強になりました。

・参考:PythonのUnicodeEncodeErrorを知る – HDEラボ はてなブックマーク - PythonのUnicodeEncodeErrorを知る - HDEラボ

下記のように、Keywords=u”人工知能” とKeywordsをUnicode型にしてあげると正常に動作しました。

xml = amazon.itemSearch("Books", Keywords=u"人工知能", ItemPage="1")

以上です。

  1. コメントはまだありません。

  1. トラックバックはまだありません。