Есть ли готовая замена Unicode, которую я могу использовать для urllib.quote и urllib.unquote в Python 2.6.5?

Python urllib.quote и urllib.unquote некорректно обрабатывают Unicode в Python 2.6.5. Вот что происходит:

In [5]: print urllib.unquote(urllib.quote(u'Cataño'))
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)

/home/kkinder/ in ()

/usr/lib/python2.6/urllib.pyc in quote(s, safe)
   1222             safe_map[c] = (c in safe) and c or ('%%%02X' % i)
   1223         _safemaps[cachekey] = safe_map
-> 1224     res = map(safe_map.__getitem__, s)
   1225     return ''.join(res)
   1226 

KeyError: u'\xc3'

Кодирование значения в UTF8 также не работает:

In [6]: print urllib.unquote(urllib.quote(u'Cataño'.encode('utf8')))
Cataño

Это обнаружено как ошибка, и есть исправление , но не для моей версии Python.

Что Я бы хотел, чтобы было что-то похожее на urllib.quote / urllib.unquote, но правильно обрабатывающее переменные Юникода, чтобы этот код работал:

decode_url(encode_url(u'Cataño')) == u'Cataño'

Любые рекомендации?

41
задан Ken Kinder 5 April 2011 в 22:33
поделиться