Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
URL可以有UTF-8字符吗?_Url_Utf 8_Character Encoding_Ascii_Url Encoding - Fatal编程技术网

URL可以有UTF-8字符吗?

URL可以有UTF-8字符吗?,url,utf-8,character-encoding,ascii,url-encoding,Url,Utf 8,Character Encoding,Ascii,Url Encoding,我很好奇是否应该用ASCII或UTF-8编码URL。我相信URL不能有非ASCII字符,但有人告诉我他们可以有UTF-8,我四处搜索,找不到哪一个是正确的。有人知道吗?这有两个部分,但它们都是“是的” 使用,可以使用完整的Unicode指令集注册域名(只需稍加改动,以防止歧义和滥用) 路径部分没有严格规定,但可以对路径中的任意字符串进行编码。浏览器可以选择显示人类可读的渲染,而不是编码路径。但是,这需要启发式,因为无法指定路径的字符集和编码 因此,这是一个(虚构的例子,不是完全正确的)计算机可读

我很好奇是否应该用ASCII或UTF-8编码URL。我相信URL不能有非ASCII字符,但有人告诉我他们可以有UTF-8,我四处搜索,找不到哪一个是正确的。有人知道吗?

这有两个部分,但它们都是“是的”

使用,可以使用完整的Unicode指令集注册域名(只需稍加改动,以防止歧义和滥用)

路径部分没有严格规定,但可以对路径中的任意字符串进行编码。浏览器可以选择显示人类可读的渲染,而不是编码路径。但是,这需要启发式,因为无法指定路径的字符集和编码

因此,这是一个(虚构的例子,不是完全正确的)计算机可读的编码URL,可以显示给用户。域名编码为
xn--msic-0ra。例如
中的某个名称,路径包含标签“motörhead”编码为UTF-8,URL编码(Unicode代码点用UTF-8中的两个字节0xC3 0xB6表示)

路径也可以是
mot%F6rhead
,它与拉丁语-1中的标签相同。在这种情况下,推断出一个合理的人类可读的表示形式会困难得多,但也许周围角色的上下文可以提供足够的线索来进行良好的猜测

单独来看,
%F6
几乎可以是任何东西,
%C3%B6
可以是例如UTF-16。

您在编写“UTF-8”时可能指的是“Unicode”。不管怎样,这都不会从根本上改变我的答案。事实上,它们都等于“不”。域和URL都不能包含任何非ASCII字符。但是,存在将任意字符编码为ASCII(百分比编码和punycode)…+1@deceze(-:嗯,是的。规范URL不包含Unicode。但IDNA的工作尤其是定义和启用人性化的半规范表示。可能重复