一尘不染

如何在python中取消对urlencoded unicode字符串的引用?

python

我有一个类似“Tanım”的Unicode字符串,以某种方式编码为“
Tan%u0131m”。我如何将这个编码后的字符串转换回原始的unicode。显然urllib.unquote不支持unicode。


阅读 153

收藏
2020-12-20

共1个答案

一尘不染

%uXXXX是一种非标准的编码方案,尽管实施仍继续存在于JavaScript领域,但已被w3c拒绝。

更常见的技术似乎是对字符串进行UTF-8编码,然后使用%XX使用%XX转义所得到的字节。urllib.unquote支持此方案:

>>> urllib2.unquote("%0a")
'\n'

不幸的是,如果您确实 需要
支持%uXXXX,则可能必须安装自己的解码器。否则,简单地以UTF-8编码您的unicode,然后%转义所得到的字节,可能会更可取。

一个更完整的示例:

>>> u"Tanım"
u'Tan\u0131m'
>>> url = urllib.quote(u"Tanım".encode('utf8'))
>>> urllib.unquote(url).decode('utf8')
u'Tan\u0131m'
2020-12-20