C# .net中cookie值为中文时的乱码解决方法
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#编码解码
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值为中文时的乱码解决方法相关推荐
- mysql编写中文时变成问号解决方法
mysql编写中文时变成问号解决方法 参考文章: (1)mysql编写中文时变成问号解决方法 (2)https://www.cnblogs.com/yangzhixue/p/11449525.html ...
- JabRef中添加中文文献出现乱码 解决方法
JabRef中添加中文文献出现乱码 解决方法 参考文章: (1)JabRef中添加中文文献出现乱码 解决方法 (2)https://www.cnblogs.com/tsingke/p/6516636. ...
- python listdir() 中文路径 中文文件夹 乱码 解决方法
python listdir() 中文路径 中文文件夹 乱码 解决方法 参考文章: (1)python listdir() 中文路径 中文文件夹 乱码 解决方法 (2)https://www.cnbl ...
- 读取文件时内容乱码解决方法
读取文件的时候,读取中文时,中文乱码. 测试: 读取的文件code.txt的内容为: 中文测试... test Chinese... 测试代码: import java.io.File; ...
- c++写入中文到mysql乱码解决方法
mysql数据库编码与字段编码都为utf8时,写入中文不乱码的方法: 1.读取mysql时,采用与mysql 相同的编码方式,如:set character_set_results=utf8mb4,保 ...
- 安装程序时出现乱码解决方法~~AppLocale作祟
建word变成'新建 Microsoft Word 恅紫',其他和office 有关菜单变成乱码 我用的是xp,AppLocale是微软出的一个自动转语言区域设置的软件,打繁体中文的游戏常常使用,一直 ...
- 项目管理中的客户需求变更时需求分析和解决方法
一.令人烦恼的需求变更 作为一个软件项目经理,在项目开发进行中,你是否遇到过这样的问题:客户的一个电话,就推翻了之前你与客户.与你自己的开发团队,经过再三讨论而确认定下来的需求.之后你就重新开始了和客 ...
- 在Qt-Creator中使用搜狗输入中文的最简单解决方法(不需要编译安装)
方法: 移动库文件--->libfcitxplatforminputcontextplugin.so 到Qt的安装目录lib/Qt/plugins/platforminputcontexts/ ...
- Arcgis中属性值小数点前0不显示解决方法
打开控制面版--区域和语言(区域)--点击 [格式] 选择 [其他设置] 下拉属性中 [显示前导零] 中选择0.7(0.*格式均可)点击[确认] 回到Arcgis中,打开属性表,此时属性已显示正常.
最新文章
- vi(vim)快捷键小记
- 百度地图的简单使用 ——html js
- 使用 VirtualBox + Vagrant + 宝塔 Linux 面板搭建本地虚拟开发环境
- FOJ 2105 Digits Count
- linux下简单的备份的脚本 2 【转】
- C++ using namespace 命名空间的定义与使用
- 除了“团队牛”还有“饭菜香”,百度 IDL 招聘算法实习生
- 从学习 Paddle 开始学习深度学习
- Oracle在plsql上数据类型是nvarchar2(2)表的字段,查询时最后一位不显示
- opencv python3树莓派_树莓派4B日志七:Python3上的OpenCV安装
- int 转 const char*
- Java 中的枚举 (enum)
- ListView嵌套ScrollView后,设置dividerHeight属性后高度计算
- 阿里巴巴矢量图标库的引入——symbol类型的使用——阿里图标组件封装
- 漫画 | 前端发展史的江湖恩怨情仇~
- 全国省市区(县)数据以及位置坐标 包含SQL脚本
- 【论文笔记】Face Anonymization by Manipulating Decoupled Identity Representation
- wordpress添加备案链接 亲测无误
- 深圳最牛街道办:腾讯华为设总部,百家上市公司年营收超2万亿
- 数据库迁移测试——功能测试