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