我有一个像“Tanım”这样的 unicode 字符串,它以某种方式编码为“Tan%u0131m”。如何将此编码字符串转换回原始 unicode。 显然 urllib.unquote 不支持 unicode。
最佳答案
%uXXXX 是 non-standard encoding scheme已被 w3c 拒绝,尽管实现仍然存在于 JavaScript 领域。
更常见的技术似乎是对字符串进行 UTF-8 编码,然后使用 %XX 对结果字节进行 % 转义。 urllib.unquote 支持此方案:
>>> urllib2.unquote("%0a")
'\n'
不幸的是,如果你真的需要支持 %uXXXX,你可能不得不推出自己的解码器。否则,可能更可取的是简单地对您的 unicode 进行 UTF-8 编码,然后对结果字节进行 % 转义。
一个更完整的例子:
>>> u"Tanım"
u'Tan\u0131m'
>>> url = urllib.quote(u"Tanım".encode('utf8'))
>>> urllib.unquote(url).decode('utf8')
u'Tan\u0131m'
关于python - 如何在python中取消引用urlencoded unicode字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/300445/