2013-10-16 64 views
4

我注意到Google不會在URL的查詢部分編碼所有特殊字符。例如:Google的網址編碼?

Placing this string in Google's search: [email protected]#$%^&*() 

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

請注意,!,^,*,(,和)未編碼。

某些字符如:或<被認爲是不安全或保留的,但Google不會對其進行編碼。

有人可以解釋爲什麼谷歌這樣做,如果他們有一個參考文件,確切地說哪些字符得到編碼,哪些不是?

感謝您的幫助!

+0

我看到這裏沒有直接的編程連接。 –

+0

¨既不編碼也不編碼 –

+0

我想知道,因爲我正在編寫生成Google URL的腳本,並且希望確保包含正確的編碼。 – Josh

回答

1

如記錄here

某些字符是不安全的URL中使用,而無需首先 編碼。由於Google搜索請求是使用HTTP網址 進行的,因此必要時,搜索請求必須遵循URL約定,包括字符 編碼。

的HTTP URL語法規定只有字母數字字符, 特殊字符$ -_ + *'(),和保留字符; /:!@ = &可以 的HTTP URL內被用作值?請求。由於搜索引擎使用保留的 字符來解碼URL,並且某些 特殊字符用於請求搜索功能,所以用作輸入參數值的所有非字母數字字符必須由URL編碼。

要URL編碼的字符串:

替換空格字符以「+」字符由它的十六進制的ASCII值替換每個 非字母數字字符,在 格式的「%」字符的後面是兩個十六進制數字。 (這樣的 ASCII值可能被稱爲轉義碼。)

某些輸入參數要求傳遞給Google搜索的值是雙URL編碼的。此要求意味着您必須連續兩次將URL編碼應用於字符串以生成最終值。

+0

他們似乎並不堅持自己的標準。在他們的參考文件中,他們列舉了這個字符串的一個例子:入場表格網站:www.stanford.edu,它應該產生這種編碼結果:入場+表格+網站%3Awww.stanford.edu然而,當我在我的瀏覽器中使用相同的字符串,相應的谷歌URL是:https://www.google.com/#q=admission+form+site:www.stanford.edu - 冒號永遠不會被編碼 – Josh

+0

@Josh我無法確認你。因爲我編碼的查詢字符串是'q = admission + form + site%3Awww.stanford。edu' – revo

+0

感謝您的關注!不幸的是,我嘗試了三種不同的瀏覽器,並獲得了相同的結果。 – Josh