——摘自《JavaScript高級程序設計》
- 編碼:
Global 對象的 encodeURI()和 encodeURIComponent()方法可以對 URI(Uniform Resource Identifiers,通用資源標識符)進行編碼,以便發送給瀏覽器。有效的 URI 中不能包含某些字符,例如空格。而這兩個 URI 編碼方法就可以對 URI 進行編碼,它們用特殊的 UTF-8 編碼替換所有無效的字符,從而讓瀏覽器能夠接受和理解。
其中,encodeURI()主要用於整個 URI(例如,http://www.wrox.com/illegal value.htm),而 encodeURIComponent()主要用於對 URI 中的某一段(例如前面 URI 中的 illegal value.htm)進行編碼。
它們的主要區別在於:
encodeURI()不會對本身屬於 URI 的特殊字符進行編碼,例如冒號、正斜杠、問號和井字號;
encodeURIComponent()則會對它發現的任何非標准字符進行編碼。
- 解碼:
與 encodeURI()和 encodeURIComponent()方法對應的兩個方法分別是 decodeURI() 和 decodeURIComponent()。
decodeURI()只能對使用 encodeURI()替換的字符進行解碼。例如,它可將%20 替換成一個空格,但不會對%23 作任何處理,因為%23 表示井字號(#),而井字號不是使用encodeURI()替換的。
decodeURIComponent()能夠解碼使用 encodeURIComponent()編碼的所有字符,即它可以解碼任何特殊字符的編碼。