谷歌的网址编码?

Jos*_*osh 5 url

我注意到 Google 没有对 URL 的查询部分中的所有特殊字符进行编码。例如:

Placing this string in Google's search: !@#$%^&*()

Yields this URL: https://www.google.com/#q=!%40%23%24%25^%26*()
Run Code Online (Sandbox Code Playgroud)

请注意,!、^、*、( 和 ) 未编码。

一些字符,例如 : 或 < 被认为是不安全的或保留的,但 Google 不会对它们进行编码。

有人能解释一下谷歌为什么这样做吗,如果他们有一份参考文件,说明哪些字符被编码,哪些没有?

谢谢你的帮助!

rev*_*evo 1

如此处记录的:

有些字符在未经过编码的情况下在 URL 中使用是不安全的。由于 Google 搜索请求是使用 HTTP URL 发出的,因此搜索请求必须遵循 URL 约定,包括必要时的字符编码。

HTTP URL 语法定义只有字母数字字符、特殊字符 $-_.+!*'() 和保留字符 ;/?:@=& 可以用作 HTTP URL 请求中的值。由于搜索引擎使用保留字符来解码 URL,并且使用一些特殊字符来请求搜索功能,因此用作输入参数值的所有非字母数字字符都必须进行 URL 编码。

对字符串进行 URL 编码:

将空格字符替换为“+”字符 将每个非字母数字字符替换为其十六进制 ASCII 值,格式为“%”字符后跟两个十六进制数字。(这样的 ASCII 值可以称为转义码。)

某些输入参数要求传递给 Google 搜索的值进行双 URL 编码。此要求意味着您必须连续两次对字符串应用 URL 编码才能生成最终值。