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个方法,总不能给了编码之道不给破解之密吧
好了,今天就到这了。晚安各位
- Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办?
- Visual Studio 2010 VB.NET 中使用System.Web.HttpUtility.UrlEncode提示HttpUtility不是Web成员的解决方法!
- (转)关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- Server.UrlEncode、HttpUtility.UrlDecode不同编码
- 关于HttpUtility.UrlEncode,Server.UrlEncode
- 关于HttpUtility.UrlEncode、UrlDecode,Server.UrlEncode、UrlDecode编码
- HttpUtility.UrlEncode
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- HttpUtility.UrlEncode、HttpUtility.UrlDecode、Server.UrlEncode、Server.UrlDecode的区分与应用
- 使用System.Web.HttpUtility.UrlEncode提示HttpUtility不是Web成员
- .Net HttpUtility.UrlEncode 的一个问题 。IEnumerable和IEnumerator有什么区别?
- POST数据提交,关于System.Web.HttpUtility.HtmlEncode与System.Web.HttpUtility.UrlEncode的区别
- HttpUtility.UrlEncode() 和Server.UrlEncode()区别
- Server.UrlEncode、HttpUtility.UrlDecode的区别
- (转)关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- 关于HttpUtility.UrlEncode,HttpUtility.UrlDecode,Server.UrlEncode,Server.UrlDecode
- .System.Web.HttpUtility.UrlEncode
- HttpUtility.UrlEncode()关于空格的编码问题
- HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格就变成了加号
- Server.UrlEncode、HttpUtility.UrlDecode的区别