我很好奇我是否应该用ASCII或UTF-8编码网址。我认为网址不能包含非ASCII字符,但是有人告诉我他们可以使用UTF-8,我搜索过并且无法找到哪一个是真的。有谁知道吗?
答案 0 :(得分:4)
这有两个部分,但它们都是“是”。
使用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表示UTF-8中的0xB6。
路径也可以是mot%F6rhead
,它与Latin-1中的标签相同。在这种情况下,推导出合理的人类可读表示会更加困难,但也许周围人物的上下文可以提供足够的提示来进行良好的猜测。
孤立地,%F6
几乎可以是任何东西,%C3%B6
可以是例如{{1}}。 UTF-16。