Python: Pyrhonで、Unicodeをurlencodeをするときの注意点

Pythonで、HTTP Requestを作成するのに、URLEncode(URIEncode)をしようとして、Unicodeで文字列を受け取って、変換かけようと思ったら、
UnicodeDecodeError
が発生して、は!?なぜに!?と思ったので調べてみた。
どうにも、urllib.urlencode は、Unicodeには対応していないらしい。

import urllib
urllib.urlencode(
{'title': "火目の巫女", }
)

と書いた場合、”火目の巫女”の部分は、Unicode扱いなんだけれど、これがUnicodeDecodeErrorを投げてくれる。
‘ascii’ codec can’t encode characters in position 0-1
こんなエラーが出るっぽい。
ということで、以下の様に、str型に変換してあげる。

import urllib
urllib.urlencode(
{'title': "火目の巫女".encode('utf-8'), }
)

いや、参ったねこいつは。三時間くらい、あれ~?なんじゃこりゃ!?とか悩んでた・・・w

Leave a comment

3 Comments.

  1. [Python]巡回

    New version of Postmarkup python で InputBox Convert Google Reader subscripti…

  2. defaultencodingを指定すればいいのでは?
    sitecustomize.pyを以下のように作成して
    import sys
    sys.setdefaultencoding(‘utf-8′)

  3. ご指摘ありがとうございます。
    早速試してみて、上手くいきました。

Leave a Reply


[ Ctrl + Enter ]

Spam Protection by WP-SpamFree