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