4

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

http://en.wikipedia.org/wiki/Gruy%C3%A8re_%28cheese%29

但是,如果您将其粘贴回 URL 地址,百分号就会消失,并且看起来是 Unicode 字符(可能还有特殊的 URL 字符)会取代百分号。

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

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

4

4 回答 4

6

您正在寻找的参考是RFC 3987: Internationalized Resource Identifiers,特别是关于将 IRI 映射到 URI 的部分

RFC 3986: Uniform Resource Identifiers指定保留字符必须是百分比编码的,但它指定百分比编码的字符被解码为 US-ASCII,其中不包括诸如è.

RFC 3987 指定非 ASCII 字符应首先编码为UTF-8,以便它们可以按照 RFC 3986 进行百分比编码。如果您允许我在 Python 中进行说明:

>>> u'è'.encode('utf-8')
'\xc3\xa8'

在这里,我要求 Pythonè使用 UTF-8 将 Unicode 编码为一串字节。返回的字节是0xc30xa8。百分比编码,这看起来像%C3%A8.

您的 URL 中也出现的括号确实适合 US-ASCII,因此它们使用其 US-ASCII 代码点进行百分比转义,这些代码点也是有效的 UTF-8。

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

于 2013-08-18T18:25:44.890 回答
4

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

常见的例子分别是%20空格和%5B和和%5C[]

于 2013-08-18T18:07:04.357 回答
2

这只是你习惯于 JavaScript 的不同语法约定。换句话说,URL 语法与 JavaScript 的语法完全不同,并且%是在该语法中引入两位十六进制数字字符代码的方式。

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

于 2013-08-18T18:06:38.043 回答
-1

重要的是要注意 % 符号服务器的两个主要目的。一种是对特殊字符进行编码,另一种是对硬件/键盘无法输入的 Unicode 字符进行编码。例如%C3%A8编码è,任何编码都代表一个正斜杠/

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

http://jsfiddle.net/CG8gx/3/

[“\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"]

于 2013-09-16T14:25:15.293 回答