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

标签 python unicode character-encoding urllib w3c

我有一个像“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/

相关文章:

html - 在 Chrome 中,如何呈现没有间隙的 Unicode block 字符?

regex - 如何在vim中搜索所有CJK字符?

swift - 如何在 Swift 2.1 中动态创建角色

python - struct pack 打印字符串而不是二进制值

python - 使用ffmpeg读取streamlink m3u8文件

python - 如何按字母从列表中删除多个字符串?

node.js - 使用 UTF-8 的 Axios setRequestHeader 方法

python - 使用嵌入式 shell 时,如何让 IPython autoreload 魔法自动加载?

ios - 如何在 Swift 中将代理对转换为 Unicode 标量

string - 如何在Python中将字符串编码为字节?