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中是什么意思?_Url - Fatal编程技术网

%符号在url中是什么意思?

%符号在url中是什么意思?,url,Url,当我复制粘贴这篇维基百科文章时,它看起来是这样的 但是,如果将其粘贴回URL地址,百分比符号将消失,看起来是Unicode字符(可能是特殊URL字符)的内容将取代百分比符号 这些是Unicode和特殊URL字符的缩写吗 我习惯于在JavaScript中看到\u00ff等内容。这只是一种不同于JavaScript的语法约定。换句话说,URL语法与JavaScript完全不同,%是在该语法中引入两个十六进制字符代码的方式 某些字符必须转义才能成为URL/URI的一部分。例如,/字符具有含义;换句话

当我复制粘贴这篇维基百科文章时,它看起来是这样的

但是,如果将其粘贴回URL地址,百分比符号将消失,看起来是Unicode字符(可能是特殊URL字符)的内容将取代百分比符号

这些是Unicode和特殊URL字符的缩写吗


我习惯于在JavaScript中看到\u00ff等内容。

这只是一种不同于JavaScript的语法约定。换句话说,URL语法与JavaScript完全不同,
%
是在该语法中引入两个十六进制字符代码的方式

某些字符必须转义才能成为URL/URI的一部分。例如,
/
字符具有含义;换句话说,它是一个元字符。如果在路径组件的中间需要一个<代码> /<代码>(当然是有点奇怪),那么你就必须逃离它。这类似于在JavaScript字符串常量中转义引号字符的需要。

%
在URI中后跟
0-9A-F
中的两个字符,是使用该十六进制代码编写字符的转义版本。这样做意味着您可以使用在其他语言中可能具有特殊意义的字符编写URI


常见的示例分别是
%20
表示空格,
%5B
%5C
表示
[
]

您要查找的参考是

指定保留字符必须为,但它还指定将百分比编码字符解码为US-ASCII,US-ASCII不包括
è
等字符

RFC 3987指定应首先对非ASCII字符进行编码,以便按照RFC 3986对其进行百分比编码。如果您允许我用Python来说明:

>>> u'è'.encode('utf-8')
'\xc3\xa8'
在这里,我要求Python使用UTF-8将Unicode
è
编码为一个字节字符串。返回的字节是
0xc3
0xa8
。编码百分比,看起来像
%C3%A8

URL中出现的括号也适用于US-ASCII,因此它们用US-ASCII代码点进行百分比转义,这也是有效的UTF-8


所以,不,没有简单的16×16表,这样的表永远不能代表Unicode的丰富性。但是有一种方法可以消除这种明显的疯狂。

注意%sign有两个主要目的,这一点很重要。一种是对特殊字符进行编码,另一种是对Unicode字符进行编码,而不是在硬件/键盘中输入的字符。例如,
%C3%A8
编码
è
,以及任何表示正斜杠的编码

使用JavaScript,我们可以创建编码图表:

[“\x00”、“\x01”、“\x02”、“\x03”、“\x04”、“\x05”, “\x06”、“\x07”、“\b”、“\t”、“\n”、“\v”、“\f”、“\r”、“\x0E”、“\x0F”, “\x10”、“\x11”、“\x12”、“\x13”、“\x14”、“\x15”、“\x16”、“\x17”, “\x18”、“\x19”、“\x1A”、“\x1B”、“\x1C”、“\x1D”、“\x1E”、“\x1F”、”, "!", "\"", "#", "$", "%", "&", "'", "(", ")", "*", "+", ",", "-", ".", “/”、“0”、“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”, “K”,“L”,“M”,“N”,“O”,“P”,“Q”,“R”,“S”,“T”,“U”,“V”,“W”,“X”, “Y”、“Z”、“[”、“\”、“]”、“^”、“_”、“a”、“b”、“c”、“d”、“e”、“f”, “g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”, “u”,“v”,“w”,“x”,“y”,“z”,“{”,“|”,“}”,“~”,“\x7F”]


刚刚在Chrome、IE和Firefox中测试过。只有FF显示解码的URL
在地址栏中。@stack_-temp:它不是一个16x16图表。字符使用UTF-8编码,然后字节的十六进制表示就是转义码。例如,字符
被编码为两个字节,表示为
%C3%A5
@stack_-temp:UTF-8代码可以长达六个字节,表示超过1个字节10000个不同的字符。(它可以表示超过一百万个代码点,但其中大部分尚未使用。)@stack_temp:UTF8将Unicode代码点转换为8位字节,然后URI编码将8位字节转换为纯ASCII文本。(具有讽刺意味的是,通常会将其存储为UTF8或UTF16)@stack_temp,因为URL中不允许它们,除非它们被转义。@stack_temp它只是UTF-8;换句话说,是Unicode。因此
%41
是“A”的代码。在JavaScript中,
encodeURIComponent()
函数将修复URI路径组件,使它们符合规则。@stack_temp“转义”是什么意思“?@stack\u temp不,你不能。正如我所说,URL/URI语法不同于JavaScript语法。换句话说,
%
约定是对URL/URI字符串进行转义的方法。注意%sign服务器有两个主要用途,这一点很重要。一个是对特殊字符进行编码,另一个是对Unicode字符进行编码,超出硬件/键盘的输入范围。根据定义,有一个16x16表,正如您所述,编码创建了一个%HEXHEX格式。十六进制是16个符号,其中有两个。我不知道你为什么认为我认为这会涵盖所有的unicode。这将是阅读单个%XX编码的一个很好的起点。@employee-0您询问了
è
如何变成
%C3%A8
,反之亦然,您需要使用上述过程进行编码。这个过程不适合16×16表。我没有问如何表示Unicode的丰富性,但也许我无意中问了,你是说URL中的所有%XX编码都是Unicode字符吗?@employee-0你的陈述让我困惑。您是否想知道如何表示不属于US-ASCII的字符,如
è
?这不是一个陈述,而是一个问题。URL中的所有%XX编码都是Unicode编码吗?