javascript - 需要将 UTF-8 字符串编码规范化为组合字符

标签 javascript python url utf-8

因此,我有一些字符,如 í、ñ 等,它们在 XML 文档的 URL 字符串中进行了百分比编码。我需要以编程方式将它们从组合形式(例如 i%CC%81)转换为其组成的 UTF-8 等效字符(在这种情况下为 %C3%AD)。

SO 很友善地向我指出了 same question关于如何在 iOS 中执行此操作(您不能,您必须创建自己的查找表)and C# (显然,在一般情况下您可以使用 C# 中的内置功能来执行此操作)。

我需要能够在 python 3.x 中做到这一点,最好也能在 JavaScript 中做到这一点。到目前为止,我已经尝试 unquote/decodeURI 字符串,然后将其重新编码回来,但显然字符并不完全等效,因为转换是无损的(我回来了以任一形式开头的原始内容)。

在一般情况下是否可以执行此操作,或者我是否需要构建自己的查找表和替换函数?另外,这里有一个示例 URL:

文件:///some/file/path/3-05%20Melodi%CC%81a%20de%20la%20montan%CC%83a%20.m4a

(显然我没有转义 XML 部分)。

更新

使用下面 Christoph 的答案为我提供了 python 解决方案,并使我能够找到 JavaScript 的解决方案。 (请注意,这是 ES 2015 的功能,浏览器支持一般,没有 IE 和 Safari 10)。

最佳答案

在 python3 中,urllib.quote 移至 urllib.parse,但您实际上正在寻找 unicodedata.normalize()

来自默认的 python3 字符串

import urllib.parse
import unicodedata

s = "î"
print (urllib.parse.quote(s))
> %C3%AE

s = unicodedata.normalize("NFC",s)
print (urllib.parse.quote(s))

> %C3%AD

在我看来,这与您正在寻找的结果非常相似。

关于javascript - 需要将 UTF-8 字符串编码规范化为组合字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40867476/

相关文章:

php - 支付宝成功返回网址

javascript - 使用 != 和 not-in 查询会在 firestore 中使用 Query.where 抛出错误

javascript - 控制CSS旋转动画 : Get, 设置、开始、停止

javascript - 如何使用内联 JSDoc 指示参数是可选的?

python - NLTK 上下文无关文法生成器

asp.net-mvc - MVC3 Url.Action 查询字符串生成

javascript - 使用 GetElementByID 中的 URL 显示图像

javascript - 从数组中找到向下最接近不同数字的数字

python - 如何在 Python 中正确应用赋值运算符?

python - 如何在selenium中验证图像是否显示在页面上?