zoukankan      html  css  js  c++  java
  • Server.UrlEncode和HttpUtility.UrlEncode编码比较

    Server.UrlEncode  HttpUtility.UrlEncode

    把这两个放到一起说是因为这两个方法在绝大多数情况下是一样的。

    它们的区别是HttpUtility.UrlEncode默认使用UTF8格式编码
    而Server.UrlEncode是使用系统预设格式编码

    Server.UrlEncode使用系統预设编码做为参数调用HttpUtility.UrlEncode编码,所以如果系统全局都用UTF8格式编码,这两个方法就是一样的。


    这两个方法是怎么编码的呢,我们来看个示例:
    复制代码

    string url1 = "http://www.cnblogs.com/a file with spaces.html?a=1&b=博客园#abc";
    
     Response.Write(HttpUtility.UrlEncode(url1) );
    //output          http://www.cnblogs.com/a+file+with+spaces.html?a=1&b=博客园#abc




    由上面的例子我们可以看出,HttpUtility.UrlEncode对冒号(:)和斜杠(/)进行了编码,所以不能用来对网址进行编码
    那么能不能对参数进行编码呢,答案也是否定的。

    因为在参数中空格应该被编码为 而不是被HttpUtility.UrlEncode编码为加号(+),所以不推荐用这两个方法对URI进行编码。



    Uri.EscapeUriString:用于对网址编码(不包含参数)

    我们还是用例子说话:

    string url1 = "http://www.cnblogs.com/a file with spaces.html?a=1&b=博客园#abc";
    Response.Write( Uri.EscapeUriString(url1));

    //outputs:http://www.cnblogs.com/a file with spaces.html?a=1&b=博客园#abc



    可以看出,Uri.EscapeUriString对空格进行了编码,也对中文进行了编码,但对冒号(:)、斜杠(/)和井号(#)未编码,所以此方法可以用于网址进行编码,但不能对参数进行编码,作用类似JavaScript中的encodeURI方法。
    Uri.EscapeDataString:用于对网址参数进行编码
    仍然用例子说话:

    string url1 = "http://www.cnblogs.com/a file with spaces.html?a=1&b=博客园#abc";
    Response.Write(Uri.EscapeDataString(url1));

    //outputs:http://www.cnblogs.com/a file with spaces.html?a=1&b=博客园#abc


     
    可以看出,Uri.EscapeDataString对冒号(:)、斜杠(/)、空格、中文、井号(#)都进行了编码,所以此方法不可以用于网址进行编码,但可以用于对参数进行编码,作用类似JavaScript中的encodeURIComponent方法。

        在C#中推荐的做法是用Uri.EscapeUriString对URI的网址部分编码,用Uri.EscapeDataString对URI中传递的参数进行编码。



  • 相关阅读:
    Servlet过滤器----Filter
    Servlet监听器详解及举例
    Servlet学习笔记(四)之请求转发与重定向(RequestDispatcher与sendRedirect)
    Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext
    Servlet学习笔记(三)之HttpServletResponse
    Servlet学习笔记(三)之HttpServletRequest
    Servlet学习笔记(一)之Servlet原理、初始化、生命周期、结构体系
    Python文件(File)及读写操作及生成器yield
    Python学习笔记摘要(一)类型 字符串 函数 列表 深浅拷贝
    Vue如何新建一个项目
  • 原文地址:https://www.cnblogs.com/-simplelife/p/8609437.html
Copyright © 2011-2022 走看看