以字串"https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7m2_3i70DISomiwJHr-CiXlYUX9BJWL9l4-m-_zTAJifvZLMEu8KVeD4QwIE8_3TvI5QDaeJhPMjqYToJpjgirGQK_dOldeURjXiKOPLZQrJG39Oz53uH3NJjBFkHO6lmgQAPeH-4Pk/s144/20120329011031鬧鐘.png"為例
- Server.UrlEncode & HttpUtility.UrlEncode
- 常見的HttpUtility.UrlPathEncode
- JS的escape
- Uri.EscapeUriString & JS encodeURI
- Uri.EscapeDataString & JS encodeURIComponent
.Server.UrlEncode
https%3a%2f%2flh4.googleusercontent.com%2f-eyLRgiEYUpk%2fT3OuH_Jlw1I%2fAAAAAAAAXw4%2fxkbNM4Fl0kc%2fs144%2f20120329011031%e9%ac%a7%e9%90%98.png
用系統預設格式編, 不de不能用
.HttpUtility.UrlEncode
https%3a%2f%2flh4.googleusercontent.com%2f-eyLRgiEYUpk%2fT3OuH_Jlw1I%2fAAAAAAAAXw4%2fxkbNM4Fl0kc%2fs144%2f20120329011031%e9%ac%a7%e9%90%98.png
預設用UTF8編, 不de不能用
.HttpUtility.UrlPathEncode
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7m2_3i70DISomiwJHr-CiXlYUX9BJWL9l4-m-_zTAJifvZLMEu8KVeD4QwIE8_3TvI5QDaeJhPMjqYToJpjgirGQK_dOldeURjXiKOPLZQrJG39Oz53uH3NJjBFkHO6lmgQAPeH-4Pk/s144/20120329011031%E9%AC%A7%E9%90%98.png
只對Path編, 且正常字元不會被編掉, MSDN說 ?、&、/、space等可能會在某些瀏覽器中被截斷或毀損的文字會編掉, 不de也可用, 似乎很ok
但#和%不會被編掉, URL裡有這些字元會掛點, #代表錨點, %是URLEncode的escape字元, (譬如C類語言的escape字元是\),
其實+也不會被編掉, 不過URL裡"大致"沒有問題(但在query部分會代表空白字元)
.escape
https%3Ahttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7m2_3i70DISomiwJHr-CiXlYUX9BJWL9l4-m-_zTAJifvZLMEu8KVeD4QwIE8_3TvI5QDaeJhPMjqYToJpjgirGQK_dOldeURjXiKOPLZQrJG39Oz53uH3NJjBFkHO6lmgQAPeH-4Pk/s144/20120329011031%25u9B27%25u9418.png
不曉得哪發明來的, W3C說 Note: The escape() function should not be used to encode URIs. Use the encodeURI() function instead.
.Uri.EscapeUriString
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7m2_3i70DISomiwJHr-CiXlYUX9BJWL9l4-m-_zTAJifvZLMEu8KVeD4QwIE8_3TvI5QDaeJhPMjqYToJpjgirGQK_dOldeURjXiKOPLZQrJG39Oz53uH3NJjBFkHO6lmgQAPeH-4Pk/s144/20120329011031%E9%AC%A7%E9%90%98.png
.encodeURI (de回來用decodeURI)
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7m2_3i70DISomiwJHr-CiXlYUX9BJWL9l4-m-_zTAJifvZLMEu8KVeD4QwIE8_3TvI5QDaeJhPMjqYToJpjgirGQK_dOldeURjXiKOPLZQrJG39Oz53uH3NJjBFkHO6lmgQAPeH-4Pk/s144/20120329011031%E9%AC%A7%E9%90%98.png
W3C說 This function encodes special characters, except: , / ? : @ & = + $ # (Use encodeURIComponent() to encode these characters).
Tip: Use the decodeURI() function to decode an encoded URI.
兩者可配合, 不de也可用, 只對Path編
.Uri.EscapeDataString
https%3A%2F%2Flh4.googleusercontent.com%2F-eyLRgiEYUpk%2FT3OuH_Jlw1I%2FAAAAAAAAXw4%2FxkbNM4Fl0kc%2Fs144%2F20120329011031%E9%AC%A7%E9%90%98.png
.encodeURIComponent (de回來用decodeURIComponent)
https%3A%2F%2Flh4.googleusercontent.com%2F-eyLRgiEYUpk%2FT3OuH_Jlw1I%2FAAAAAAAAXw4%2FxkbNM4Fl0kc%2Fs144%2F20120329011031%E9%AC%A7%E9%90%98.png
W3C說 This function encodes special characters. In addition, it encodes the following characters: , / ? : @ & = + $ #
Tip: Use the decodeURIComponent() function to decode an encoded URI component.
兩者可配合, 不de不能用
沒有留言:
張貼留言