2012-01-31 74 views
10

http://www.w3schools.com/tags/ref_urlencode.asp爲什麼URL編碼,或哪些字符編碼

由於網址通常包含ASCII集以外的字符,則URL具有 被轉換成一個有效的ASCII格式。

但是這兩個空格,/,%都是ASCII字符集的一部分,所以爲什麼要先編碼它們呢?什麼字符應該被編碼?

+0

例如UTF-8字符或來自不同字符集的任何字符。 ASCII只是最小的字符範圍。 – Halcyon 2012-01-31 20:18:30

+0

我不是很舒服,但我認爲每個字符都應該被編碼,這可能會有不同的含義(例如&和空格)。 不使用w3schools.com,它無關,與W3C和相當往往是錯誤的。 – 2012-01-31 20:19:14

回答

5

如上所述,空格在URL中無效。大多數瀏覽器自動對它們進行編碼。然而...

您鏈接到的頁面有一個示例,在「試用」一節中使用單詞「Günter」。如果單詞「Günter」作爲查詢字符串參數發送,則不起作用。因爲「ü」不在標準的ASCII字符集中。

這意味着當有潛在的非ASCII字符時使用。一個示例可能是使用數據庫中的數據創建超鏈接。假設代碼創建一個鏈接到用戶個人資料頁面。非編碼,該礦將是:

<a href="profile/?username=David Stratton">Your profile</a> 

而君特的將是

<a href="profile/?username=Günter">Your profile</a> 

礦,大多數瀏覽器可以處理。 Günter的,可能不是。

編碼,這些將成爲

<a href="profile/?username=David%20Stratton">Your profile</a> 

<a href="profile/?username=G%FCnter">Your profile</a> 

這是有效的URL。

(請原諒,在這樣的一個參數最精心設計的系統將無法通過用戶名的事實,這只是一個樣本,以澄清這一概念。)

+0

請不要只說*「它不會工作」*。另一方面,至少解釋它是怎麼做的,如果出了什麼問題。 – yckart 2015-05-29 00:17:01

1

某些字符(如空格)需要轉義才能確保有效的url。一旦產生這個肯定會產生GET參數的地方。

6

在URL中的字符應進行編碼由於根據URL specification,某些字符具有特殊含義,因此某些字符是不允許的,並且某些字符在所有字符集中都不可表示。

請參閱this intro瞭解更多指導。

關於您給出的字符示例'/'被保留用作URL中的組件分隔符,'%'用作轉義字符。

+0

對於規範/鏈接+1 :-) – The111 2014-04-22 17:45:12