C# .net中cookie值为中文时的乱码解决方法

一.cookie的名称或子cookie的名称不能为中文,否则无法获得cookie

这个好办,名称不用中文即可

二.cookie的值为中文时候,取cookie的值会出现乱码

解决办法:存取cookie时候先解码和编码

存cookie,进行编码:

cookie.Value = HttpUtility.UrlEncode("上海");

取cookie时候,进行解码:
cookieValue = HttpUtility.UrlDecode(cookie.Value);

另外注意:

取子cookie时候,应该先解码,再根据%号分解,才能取到子cookie的值.

写Cookie里,一定要加上UrlEncode,用Request读Cookie时,一定要加上UrlDecode

示例如下:
protected void Page_Load(object sender, EventArgs e)
     {
         HttpCookie GoodList = null;

//如果GoodList不为空,则GOODID+1,GoodsName加"乐无烟"
         if (Request.Cookies["GoodList"] != null)
         {
             GoodList = Request.Cookies["GoodList"];
             GoodList.Values["GoodsID"] = Server.UrlEncode(Server.UrlDecode(Request.Cookies["GoodList"]["GoodsID"]) + ",1");
             GoodList.Values["GoodsName"] = Server.UrlEncode(Server.UrlDecode(Request.Cookies["GoodList"]["GoodsName"]) + ",乐无烟");
             GoodList.Expires = DateTime.Now.AddDays(1);
             Response.Cookies.Add(GoodList);
         }
         else
         {
             //初次写入Cookie
             GoodList = new HttpCookie("GoodList");
             GoodList.Values["GoodsID"] = Server.UrlEncode("2");
             GoodList.Values["GoodsName"] = Server.UrlEncode("无烟锅");
             GoodList.Expires = DateTime.Now.AddDays(1);
             Response.Cookies.Add(GoodList);
         }

Response.Write(Server.UrlDecode(Request.Cookies["GoodList"]["GoodsID"]) + "<br/>");
         Response.Write(Server.UrlDecode(Request.Cookies["GoodList"]["GoodsName"]) + "<hr/>");
}

中文cookie的问题,
在Windows 2000正常,
在Windows 2003 sp1下会偶尔出现乱码(遇到双字节特殊字符时候,例子:「`蹆绌 ),
在windows 2003 SP2下基本乱码

解决办法:
采用
Server.UrlEncode();
Server.UrlDecode();
Cookie["MyCookie"] = Server.UrlEncode("中文")
Response.Write(Server.UrlDecode(Request.Cookies("MyCookie").Value()))
编码和解码。

另外编码和解码要一致
System.Web.HttpUtility.UrlDecode 和 System.Web.HttpUtility.UrlEncode
System.Web.HttpContext.Current.Server.UrlDecode 和 System.Web.HttpContext.Current.Server.UrlEncode

JS、C#编码解码

原文: https://www.cnblogs.com/lmfeng/archive/2011/11/08/2240991.html

escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z

encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z

encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

1.

JS: escape :

  • js使用数据时可以使用escape
  • 例如:搜藏中history纪录。
  • 0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。

解码使用:unescape

C#:

HttpUtility.UrlEncode   
HttpUtility.UrlDecode

2.

JS: encodeURI :

  • 进行url跳转时可以整体使用encodeURI
  • 例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");

解码使用decodeURI();

C#: decodeURIComponent

3.

JS: encodeURIComponent :

  • 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。                           
  • 例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7& u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a& gt;');</script>

解码使用decodeURIComponent()

C#:

[HttpContext.Current.]Server.UrlDecode

[HttpContext.Current.]Server.UrlEncode

转载于:https://www.cnblogs.com/xcsn/p/5048085.html

C# .net中cookie值为中文时的乱码解决方法相关推荐

  1. mysql编写中文时变成问号解决方法

    mysql编写中文时变成问号解决方法 参考文章: (1)mysql编写中文时变成问号解决方法 (2)https://www.cnblogs.com/yangzhixue/p/11449525.html ...

  2. JabRef中添加中文文献出现乱码 解决方法

    JabRef中添加中文文献出现乱码 解决方法 参考文章: (1)JabRef中添加中文文献出现乱码 解决方法 (2)https://www.cnblogs.com/tsingke/p/6516636. ...

  3. python listdir() 中文路径 中文文件夹 乱码 解决方法

    python listdir() 中文路径 中文文件夹 乱码 解决方法 参考文章: (1)python listdir() 中文路径 中文文件夹 乱码 解决方法 (2)https://www.cnbl ...

  4. 读取文件时内容乱码解决方法

    读取文件的时候,读取中文时,中文乱码. 测试: 读取的文件code.txt的内容为: 中文测试...       test Chinese... 测试代码: import java.io.File; ...

  5. c++写入中文到mysql乱码解决方法

    mysql数据库编码与字段编码都为utf8时,写入中文不乱码的方法: 1.读取mysql时,采用与mysql 相同的编码方式,如:set character_set_results=utf8mb4,保 ...

  6. 安装程序时出现乱码解决方法~~AppLocale作祟

    建word变成'新建 Microsoft Word 恅紫',其他和office 有关菜单变成乱码 我用的是xp,AppLocale是微软出的一个自动转语言区域设置的软件,打繁体中文的游戏常常使用,一直 ...

  7. 项目管理中的客户需求变更时需求分析和解决方法

    一.令人烦恼的需求变更 作为一个软件项目经理,在项目开发进行中,你是否遇到过这样的问题:客户的一个电话,就推翻了之前你与客户.与你自己的开发团队,经过再三讨论而确认定下来的需求.之后你就重新开始了和客 ...

  8. 在Qt-Creator中使用搜狗输入中文的最简单解决方法(不需要编译安装)

    方法: 移动库文件--->libfcitxplatforminputcontextplugin.so 到Qt的安装目录lib/Qt/plugins/platforminputcontexts/ ...

  9. Arcgis中属性值小数点前0不显示解决方法

    打开控制面版--区域和语言(区域)--点击 [格式] 选择 [其他设置] 下拉属性中 [显示前导零] 中选择0.7(0.*格式均可)点击[确认] 回到Arcgis中,打开属性表,此时属性已显示正常.

最新文章

  1. vi(vim)快捷键小记
  2. 百度地图的简单使用 ——html js
  3. 使用 VirtualBox + Vagrant + 宝塔 Linux 面板搭建本地虚拟开发环境
  4. FOJ 2105 Digits Count
  5. linux下简单的备份的脚本 2 【转】
  6. C++ using namespace 命名空间的定义与使用
  7. 除了“团队牛”还有“饭菜香”,百度 IDL 招聘算法实习生
  8. 从学习 Paddle 开始学习深度学习
  9. Oracle在plsql上数据类型是nvarchar2(2)表的字段,查询时最后一位不显示
  10. opencv python3树莓派_树莓派4B日志七:Python3上的OpenCV安装
  11. int 转 const char*
  12. Java 中的枚举 (enum)
  13. ListView嵌套ScrollView后,设置dividerHeight属性后高度计算
  14. 阿里巴巴矢量图标库的引入——symbol类型的使用——阿里图标组件封装
  15. 漫画 | 前端发展史的江湖恩怨情仇~
  16. 全国省市区(县)数据以及位置坐标 包含SQL脚本
  17. 【论文笔记】Face Anonymization by Manipulating Decoupled Identity Representation
  18. wordpress添加备案链接 亲测无误
  19. 深圳最牛街道办:腾讯华为设总部,百家上市公司年营收超2万亿
  20. 数据库迁移测试——功能测试

热门文章

  1. Android开发环境——Eclipse ADT相关内容汇总
  2. MyEclipse极速优化
  3. c#写的贪吃蛇小游戏
  4. 提供《华容道与数据结构》代码供测试
  5. memset用法详解
  6. 泛域名Wildcard Domain
  7. 转在同一个sql语句中如何写不同条件的count数量
  8. 四则运算-ppt演示
  9. 数据库设计中的14个关键技巧收藏[转]
  10. ICSharpCode.SharpZipLib 压缩