zoukankan      html  css  js  c++  java
  • 关于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就会获取不到了。所以这是要注意的一点。

  • 相关阅读:
    python 类继承演示范例的代码
    C#监控指定目录的文件变化的代码
    如何开启红米手机4X的ROOT超级权限
    C# 发送电子邮件源码片段
    android中使用afinal一行源码显示网络图片
    (详细)华为畅享7 SLA-AL00的usb调试模式在哪里打开的流程
    C#自定义FTP访问类的代码
    C#的String.Split 分割字符串用法详解的代码
    红米Note 5A完美卡刷开发版获得ROOT超级权限的方法
    C# 类如何声明索引器以提供对类的类似数组的访问的代码
  • 原文地址:https://www.cnblogs.com/AnswerTheQuestion/p/6421870.html
Copyright © 2011-2022 走看看