HttpUtility.UrlEncode講解


hello 大家好,今天講講HttpUtility.UrlEncode編碼

HttpUtility.UrlEncode方法有4個重載分別如下

我們有這么一個字符串

string str = "http://www.cnblogs.com/a file with spaces.html?a=1&b=博客園#abc";

1.使用HttpUtility.UrlEncode(str)

輸出效果如下:http%3a%2f%2fwww.cnblogs.com%2fa+file+with+spaces.html%3fa%3d1%26b%3d%e5%8d%9a%e5%ae%a2%e5%9b%ad%23abc

大家可以看出編碼后對url及參數都進行了編碼

冒號(:):%3a

斜杠(/):%2f

空格:+

問號(?):%3f

等號(=):%3d

與號(&):%26

井號(#):%23

所以呢,這玩意用起來感覺不太適合對URL進行編碼,如果參數中有空格並沒有轉成 %20,而是轉成了“+”號,對沒有空格的url到是可以用下

2.使用HttpUtility.UrlEncode(str, Encoding.UTF8)

輸出效果如下:http%3a%2f%2fwww.cnblogs.com%2fa+file+with+spaces.html%3fa%3d1%26b%3d%e5%8d%9a%e5%ae%a2%e5%9b%ad%23abc

多了一個參數,可以指定編碼類型而已,看上去和第一個沒區別,我們換一個編碼類型就有區別了,請看下邊

HttpUtility.UrlEncode(str, Encoding.UTF7)

http%3a%2f%2fwww.cnblogs.com%2fa+file+with+spaces.html%3fa%2bAD0-1%2bACY-b%2bAD1TWluiVu0AIw-abc

這下有區別了吧!

3.使用HttpUtility.UrlEncode(byte[] bytes) 將字節數組轉換為編碼的 URL 字符串。

byte[] byteArray = Encoding.UTF8.GetBytes(str);獲取utf8編碼格式的字節數組  
encodeStr = HttpUtility.UrlEncode(byteArray);然后對字節數組進行編碼,輸入效果等同於第一個

不信看效果如下:

http%3a%2f%2fwww.cnblogs.com%2fa+file+with+spaces.html%3fa%3d1%26b%3d%e5%8d%9a%e5%ae%a2%e5%9b%ad%23abc

4.使用HttpUtility.UrlEncode(byte[] bytes, int offset, int count);從數組中指定位置開始,按照指定字節數量,將字節數組轉換為 URL 編碼的字符串。

byte[] byteArray = Encoding.UTF8.GetBytes(str);獲取utf8編碼格式的字節數組  
encodeStr = HttpUtility.UrlEncode(byteArray,0,5);然后對字節數組進行編碼,從0位置開始去4個

不信看效果如下:http%3a

 

PS:HttpUtility.UrlEncode既然是編碼,對應的肯定也有解碼,就是HttpUtility.UrlEncode對應的也有以上4個方法,總不能給了編碼之道不給破解之密吧

好了,今天就到這了。晚安各位

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM