zoukankan      html  css  js  c++  java
  • 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个方法,总不能给了编码之道不给破解之密吧

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

    不拼不播,人生白活。
  • 相关阅读:
    CDN实现原理
    openstack测试集群扩容配置
    ELK5.2.2自动化部署脚本
    Python多线程
    Python反射
    OpenStack快照分析:(三)从磁盘启动云主机离线(在线)快照分析
    OpenStack快照分析:(二)从镜像启动的云主机离在线快照分析
    OpenStack快照分析:(一)从镜像启动的云主机离线快照分析
    Python元编程
    Python源码阅读:对象
  • 原文地址:https://www.cnblogs.com/liweilong/p/10887736.html
Copyright © 2011-2022 走看看