我很好奇我是否应该使用 ASCII 或 UTF-8 对 url 进行编码。我认为 url 不能有非 ASCII 字符,但有人告诉我他们可以有 UTF-8,我四处搜索,找不到哪个是真的。有人知道吗?
最佳答案
这有两个部分,但它们都等于"is"。
与 IDNA ,可以使用完整的 Unicode 轨道注册域名(稍作改动以防止歧义和滥用)。
路径部分没有严格规定,但可以在路径中编码任意字符串。浏览器可以选择显示人类可读的渲染而不是编码路径。但是,这需要启发式方法,因为无法指定路径的字符集和编码。
所以,http://xn--msic-0ra.example/mot%C3%B6rhead是一个(虚构的例子,不完全正确)计算机可读的编码 URL,可以向用户显示为 http://müsic.example/motörhead .域名编码为xn--msic-0ra.example
在一个叫做 Punycode 的东西中,并且路径包含编码为 UTF-8 和 URL 编码的标签“motörhead”(Unicode 代码点 U+00F6 在 UTF-8 中用两个字节 0xC3 0xB6 表示)。
路径也可以是 mot%F6rhead
这与 Latin-1 中的标签相同。在这种情况下,推断出合理的人类可读表示会困难得多,但也许周围字符的上下文可以提供足够的提示来进行良好的猜测。
单独来看,%F6
几乎可以是任何东西,%C3%B6
可以是例如UTF-16。
关于url - url 可以有 UTF-8 字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357509/