关于Cookie中存放于读取中文字符的问题,以及删除Cookie

近来,做项目的过程之中,用到了Cookie中存放中文字符的问题,平时不怎么用,一旦用到了还真是让人恶心!

由于Cookie是存放在本地的,而我们是通过服务器端向本地写数据,那么网络的编码格式就会影响了汉字的正常存储导致汉字乱码。

通常在给汉子进行编码时有两种常用的方法:HttpUtility.UrlEncode Server.UrlEncode,虽然编码/解码成对使用没问题,但是毕竟是两种方法,总该是有区别的,网上查了一下,区别如下:

1、HttpUtility.UrlEncode(向Cookie中写时用),HttpUtility.UrlDecode(从Cookie中读时用)是静态方法,而Server.UrlEncode(写),Server.UrlDecode(读)是实例方法。

例如:

2、Server是HttpServerUtility类的实例,是System.Web.UI.Page的属性。
3、用HttpUtility.UrlEncode编码后的字符串和用Server.UrlEncode进行编码后的字符串对象不一样

 

Server.UrlEncode 可以根据你页面定义好的编码方式进行编码。

而 HttpUtility.UrlDecode则默认以utf8来编码。 不然你需要自己指定编码方式:

Encoding gb2312= Encoding.GetEncoding("gb2312");

string v5= HttpUtility.UrlEncode("中文汉字", gb2312);

 

而 Server.UrlDecode则默认调用web.config中<globalization />节点中指定来编码

<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" />

string v3= Server.UrlEncode("中文汉字");

 

这两种方式,在不使用web.config默认的编码方式时,HttpUtility.UrlEncode比较好用,但是不方便;如果是使用web.config统一编码,则Server.UrlDecode比较好。另外就是,如果是下载文件而定义编码方式,最好使用HttpUtility.UrlEncode

 

二、删除Cookie的操作

找出要删除的cookie

c.setMaxAge(0);  设置其时长为0,让其立即过期
response.addCookie(c);  执行添加

注意:在做项目的过程中,遇到了一个问题,当执行删除Cookie后,我没有跳转到客户端,而是直接跳转到servlet中,在转发到其他页面,(所以虽然执行了删除Cookie的代码,但是,实际上Cookie并没有被删除,因为Cookie是客户端的数据,而我并没有在客户端执行之一操作)

所以在执行删除Cookie的代码之后,要重定向到客户端之后,Cookie才能被删除

 

补充:在结合Cookie和Session使用时,当删除Cookie时要注意,如果删除了JSESSIONID。那么在本次会话中session就会获取不到了。所以这是要注意的一点。

 

转载于:https://www.cnblogs.com/AnswerTheQuestion/p/6421870.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值