相关疑难解决方法(0)

我可以在Python 2.6.5中使用unllode-ready替换urllib.quote和urllib.unquote吗?

Python urllib.quote并且urllib.unquote不能在Python 2.6.5中正确处理Unicode.这是发生的事情:

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

/home/kkinder/<ipython console> in <module>()

/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'
Run Code Online (Sandbox Code Playgroud)

将值编码为UTF8也不起作用:

In [6]: print urllib.unquote(urllib.quote(u'Cataño'.encode('utf8')))
Cataño
Run Code Online (Sandbox Code Playgroud)

它被认为是一个bug并且有一个修复,但不适用于我的Python版本.

我想要的是类似于urllib.quote/urllib.unquote,但正确处理unicode变量,这样代码就可以工作:

decode_url(encode_url(u'Cataño')) == u'Cataño'
Run Code Online (Sandbox Code Playgroud)

有什么建议?

python unicode urllib

41
推荐指数
2
解决办法
2万
查看次数

标签 统计

python ×1

unicode ×1

urllib ×1