過去の日記

2013-09-13 [長年日記]

Unicodeをurllib.quoteに渡すとエラーになる [Python]

import urllib
print urllib.quote(u'あ')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib.py", line 1282, in quote
    return ''.join(map(quoter, s))
KeyError: u'\u3042'

は?
なんで?


まぁ、いいや。検索してみる……。
このようにするとよい。

print urllib.quote(u'あ'.encode('utf-8'))
%E3%81%82


逆はこう。

a = urllib.quote(u'あ'.encode('utf-8'))
print urllib.unquote(a).decode('utf-8')


もうちょっと確認。

print type(urllib.unquote(a).decode('utf-8'))
<type 'unicode'>