爲什麼你需要編碼網址?是否有充分的理由說明爲什麼您必須將GET數據中的每個空間都更改爲%20
?爲什麼你需要編碼URL?
回答
從RFC 2936,部分2.4.3:
空格字符被排除 因爲顯著空間可能 消失,並且當URI被轉錄 或排版或經受 處理可以 引入微不足道空間文字處理 程序。在很多情況下,空白也用於對分隔URI進行分隔。
無法得到比RFC更準確的 – Perpetualcoder 2010-01-28 06:36:26
換句話說,「不,沒有固有的技術原因,但我們知道實現者和用戶都是sl。不馴的。」這可能是正確的決定,主要是因爲用戶難以保持適當的空間。 – 2010-01-28 06:39:37
@Matthew - 有一個固有的技術原因,請參閱我的回答 – Rippo 2010-01-28 06:40:47
嗯,你這樣做是因爲每個不同的瀏覽器都知道構成URL的字符串是如何編碼的。將空間轉換爲%20等,使得URL/URI可移植。它可能是拉丁語-1,它可能是unicode。它需要標準化爲普遍理解的東西。看看rfc3986 http://tools.ietf.org/html/rfc3986#section-2.1
更改字節的表示不指定編碼。至少不是字面上的。 – 2012-08-09 17:10:13
因爲有些字符有特殊的含義。
例如,在查詢字符串中,與號(&
)用作鍵/值對之間的分隔符。如果要將&符號放入其中一個值中,它看起來就像是一個值的結尾和下一個鍵的開始之間的分隔符。所以對於這樣的特殊字符,我們使用百分號編碼,以便我們確信數據是明確編碼的。
但是,假設您可以將'&26'編碼爲'%26'。你仍然可以得到一個包含像'100%26 = 22'這樣的字符串的值。它仍然會看起來像key-val對之間的分隔符是不是? – 2017-01-14 01:25:08
不,因爲'%'是具有特殊含義的字符之一,所以也必須進行編碼(如'%25')。如果你有字符串值'%26',那麼它會出現在一個URL中作爲'%2526',因爲'%'會被編碼。爲了得到字符串值,你需要將'%25'解碼爲'%',並將字符串'%26'留給你。 – Jim 2017-01-14 02:30:34
- 原來舊的瀏覽器可能會被空間困惑(不再是真正的問題了)。
- 現在,如果有人複製的URL發送一個鏈接 - 空間可以打破的超級鏈接 - 即
嘿!看看這個derping貓彈鋼琴!
http://www.mysite.com/?video=funny cat plays piano.
看看鏈路是如何斷開的?
現在看看這個:
http://www.mysite.com/?video=funny%20cat%20plays%20piano.
- 1. 爲什麼需要編碼和解碼url?
- 2. 爲什麼需要XML編碼?
- 3. 爲什麼你需要一個URL末尾的斜線?
- 4. Python:urllib2.urlopen(url,data)爲什麼你需要urllib.urlencode()數據?
- 5. 爲什麼你需要計算渲染?
- 6. 爲什麼你需要一個Hyper-V?
- 7. 爲什麼你需要Gitosis或Gitolite?
- 8. 爲什麼你需要原型測試?
- 9. 爲什麼你需要重載方法?
- 10. Kendo控件 - 編碼和爲什麼我們需要編碼?
- 11. 爲什麼你需要發出IL代碼?
- 12. 爲什麼我需要url encode =?
- 13. 爲什麼需要編譯Java代碼,但JavaScript代碼不需要
- 14. Win32 API函數需要什麼編碼?
- 15. 什麼是服務發現,爲什麼你需要它?
- 16. 爲什麼需要爲多個平臺編譯.NET代碼
- 17. 你爲什麼要用fmt.Sprint?
- 18. 什麼是URL解碼和URL編碼
- 19. 爲什麼我們需要編寫log.isDebugEnabled?
- 20. 爲什麼XAML不需要編譯?
- 21. 爲什麼需要
- 22. 爲什麼需要「{} \」?
- 23. 爲什麼在Base32中編碼URL?
- 24. mod_rewrite:爲什麼apache的URL編碼%{HTTP_COOKIE}?
- 25. 爲什麼const_cast需要說明你要投射的內容?
- 26. 爲什麼setuptools需要寫字節碼?
- 27. 爲什麼gae需要電話號碼?
- 28. 爲什麼字符編碼對URL很重要?
- 29. 你需要學習OpenGL什麼?
- 30. 什麼時候你需要導入PHP?
一個很好的理由是,在印刷材料最好是使用'%20'使一些BOD可以在不試圖猜測的空格數鍵入它! – 2012-08-10 10:19:46