谷歌的URL编码?

时间:2013-10-16 19:20:26

标签: url

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

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

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

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

某些字符,例如:或<被认为是不安全或保留,但谷歌不编码。

有人可以解释为什么谷歌会这样做,以及他们是否有一个参考文件,确切地说哪些字符被编码而哪些不被编码?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

记录在案here

  

有些字符在没有首先使用的情况下在网址中使用是不安全的   编码。由于Google搜索请求是使用HTTP网址生成的,   搜索请求必须遵循URL约定,包括字符   必要时编码。

     

HTTP URL语法定义只有字母数字字符,即   特殊字符$ -_。+!*'()和保留字符; /?:@ =&能够   用作HTTP URL请求中的值。自保留   搜索引擎使用字符来解码URL,还有一些   特殊字符用于请求搜索功能,然后全部   用作输入参数值的非字母数字字符必须   是URL编码的。

     

对字符串进行URL编码:

     

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

     

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