有个奇怪的问题:登陆页面中使用Cookie存值,Cookie中要存中文汉字。代码在本地调试,一切OK,汉字也能顺利存到Cookie和从Cookie中读出,可是放到服务器上无论用了,好好的汉字成了乱码,本来觉得是服务器环境和本地的不同,后来一想应该不对,由于代码放服务器上以后再访问登陆页面会和服务器交互,交互必然要有网络传输,而Cookie是存在本地的,就是在服务器向本地写Cookie的时候,网络的编码格式影响了汉字的正常存储致使汉字乱码。顺着这个思路改代码,而后测试,经过!web
可是新问题来了,在给汉字编码的时候,经常使用的有这两种:HttpUtility.UrlEncode 和 Server.UrlEncode,虽然编码/解码成对使用没问题,可是毕竟是两种方法,总该是有区别的,网上查了一下,区别以下:服务器
第一:引用:网络
一、HttpUtility.UrlEncode,HttpUtility.UrlDecode是静态方法,而Server.UrlEncode,Server.UrlDecode是实例方法。
二、Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性。
三、用HttpUtility.UrlEncode编码后的字符串和用Server.UrlEncode进行编码后的字符串对象不同测试
Server.UrlEncode 能够根据你页面定义好的编码方式进行编码。编码
而 HttpUtility.UrlDecode则默认以utf8来编码。 否则你须要本身指定编码方式:调试
Encoding gb2312= Encoding.GetEncoding("gb2312");code
string v5= HttpUtility.UrlEncode("中文汉字", gb2312);对象
而 Server.UrlDecode则默认调用web.config中<globalization />节点中指定来编码字符串
<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" />string
string v3= Server.UrlEncode("中文汉字");
这两种方式,在不使用web.config默认的编码方式时,HttpUtility.UrlEncode比较好用,可是不方便;若是是使用web.config统一编码,则Server.UrlDecode比较好。另外就是,若是是下载文件而定义编码方式,最好使用HttpUtility.UrlEncode