【发布时间】:2023-03-07 03:23:02
【问题描述】:
我有一个关于在 JavaScript 中的 URL 中编码特殊/扩展 UTF-8 字符的问题。同样的问题适用于许多字符,例如 Registered R-circle,但我的示例使用了变音符号:
ü = UTF-8 中的 %C3%BC(从http://www.utf8-chartable.de/ 底部算起四行)
如果 url 包含表示为 UTF-8 (ü = %C3%BC) 的变音符号,并且我通过 encodeURIComponent 运行它,则 %s 是编码的,字符串现在看起来像“%25C3%25BC”并且它得到由我的系统正确处理。这很好。
url = "http://foo.com/bar.html?%C3%BC"
url = encodeURIComponent(url);
// url 现在表示为“http%3A%2F%2Ffoo.com%2Fbar.html%3F%25C3%25BC”
但是,坏处:如果预编码的字符串有一个未编码的字符,即实际的变音符号,则后编码看起来像 "%C3%BC" 并且失败,因为我相信 %s 也应该被编码.:
url = "http://foo.com/bar.html?ü"
url = encodeURIComponent(url);
// url 现在表示为“http%3A%2F%2Ffoo.com%2Fbar.html%3F%C3%BC”
我认为它失败了,因为它没有像 url 的其余部分那样彻底编码。
因此,除了一般建议或对我不知道要问的问题的回答之外,我想我想知道的是如何让原始元音变音(和所有其他特殊字符)完全编码。那是不正确的吗?
感谢您的帮助! 内特
【问题讨论】:
-
你是双重编码。您正在使用什么样的系统?
标签: javascript encoding utf-8