• HttpUtility.UrlEncode 和Server.UrlEncode的区别,记录记录,被乱码搞晕头了。。。。。


    今天修改原来的站点,有几个session和cookies乱码问题,然后又好好看了一下关于编码这块的内容。

    大概是:登录处,用session记录了一点中文内容。然后cookies也记录了一点中文内容,取出来以后一下session乱码一下cookie乱码

    翻代码查了一下代码,在统一设置cookies的时候,使用了 Server.UrlEncode ,但是发现,登录后cookies取出来是乱码,

    然后换为 HttpUtility.UrlEncode 则不乱码。

    猜测这两个方法默认用的编码格式不一样,后来观察网页发现,登录处竟然是gb2312而首页调用cookies的地方是utf-8 醉了,后来发现是这个文件夹下单独有一个web.config设定了编码,也不知道当初为什么这样子做。。。单独文件夹还设置单独编码。估计是因为拷贝过去没删除。。。。按道理整站不应该是统一一个编码吗?

    然后猜想他们默认编码方式不一样后,百度之,如下文章所说,果然是默认编码方式不一,遂改之,然后整改了所有地方单独设置编码的。不再乱码。

    一、HttpUtility.UrlEncode 方法

    1、public static string UrlEncode(byte[])

    将字节数组转换为已编码的 URL 字符串。

    2、public static string UrlEncode(string)

    对 URL 字符串进行编码。
     

    3、public static string UrlEncode(string, Encoding)

    使用指定的编码对象对 URL 字符串进行编码。
     

    4、public static string UrlEncode(byte[], int, int)

    从数组中的指定位置开始一直到指定的字节数为止,将字节数组转换为 URL 编码的字符串。
     

    二、Server.UrlEncode方法

    1、public string UrlEncode(string)

    对字符串进行 URL 编码,并返回已编码的字符串。
     

    2、public void UrlEncode(string, TextWriter)

    URL 对字符串进行编码,并将结果输出发送到 TextWriter 输出流。
     

    三、Server.UrlEncode与HttpUtility.UrlEncode的区别

    1、HttpUtility.UrlEncode,HttpUtility.UrlDecode是静态方法,而Server.UrlEncode,Server.UrlDecode是实例方法。


    2、Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性。

    3、Server.UrlEncode的编码方式是按照本地程序设置的编码方式进行编码的,而HttpUtility.UrlEncode是默认的按照utf-8格式进行编码的,如果需要指定HttpUtility.UrlEncode的编码方式,则需要:HttpUtility.UrlEncode("学习也休闲", Encoding.GetEncoding("gb2312"));

    4、两者都会如下转换字符:空格会被转换为加号、非字母数字字符会被转换为他们的十六进制表现形式。

  • 相关阅读:
    BZOJ3000 斯特林公式
    组合数学一些结论
    CSP2019-JS 游记(总结)
    Atcoder AGC1~10 problem list
    ioi2015hw
    NOI2017解题报告
    HNOI2021游记
    4月做题记录
    WC2021题解
    P4592 [TJOI2018]异或
  • 原文地址:https://www.cnblogs.com/Jerseyblog/p/6220058.html
Copyright © 2020-2023  润新知