【转】asp.net Cookie值中文乱码问题解决方法

来源:脚本之家、百度空间、网易博客

http://www.jb51.net/article/34055.htm

http://hi.baidu.com/honfei

http://tianminqiang.blog.163.com/blog/#m=0

==============================================================================

cookie中怎么保存中文

在用cookie保存用户名的时候,发现cookie值不能存中文,报如下错:

Control character in cookie value, consider BASE64 encoding your
value

错误发生在:response.addCookie(cookie);

在以前的编程中也碰到过这样的问题,主要是cookie值里面存在非法参数,如存在”\r\n”、”\n”之类的字符时就报报这样的错,但我就个用户名啊,不存在像这些字符啊,不管,我把cookie值设为一个默认的中文用户名,运行看是否出问题,果不其然,出现同样的错误,结果知道,cookie中不能保存中文。

最后想想把中文转换为UTF-8字符串进行保存应该没问题,即用 URLEncoder.encode(“中文用户名”,”UTF-8″));
这样把中文用户名转换为UTF-8字符串,运行时通过。在最后接收这个值的时候,用URLDecoder.decode(cookies.getValue(),”UTF-8″);来解码得到我要的中文用户名。
URLEncode及URLDecode在包java.net里面。

。。。。。。。。。。。。。。
其他语言都有URL字符标准化转码函数,如: 
ASP:server.URLEncode() 
PHP:urlencode() 
JAVA:java.net.URLEncoder.encode()

以上来自网易博客

====================================================================================

asp.net
Cookie值中文乱码问题解决方法

cookie里面不能写中文,是由于cookie先天的编码方式造成的。所以需要有一种中间编码来过渡。
URLEncode是最好的选择。

我们以asp.net为例,代码如下:

代码如下:


设置Cookie时
HttpCookie cookie = new HttpCookie("name", System.Web.HttpContext.Current.Server.UrlEncode("脚本之家"));
Response.Cookies.Add(cookie);
读取Cookie时:
if (Request.Cookies["name"] != null)
{
  Response.Write(System.Web.HttpContext.Current.Server.UrlDecode(Request.Cookies["name"].Value));
}

注意:编码和解码要一致

System.Web.HttpContext.Current.Server.UrlDecode 和 System.Web.HttpContext.Current.Server.UrlEncode
System.Web.HttpUtility.UrlDecode 和 System.Web.HttpUtility.UrlEncode

以上部分来自脚本之家文章《asp.net Cookie值中文乱码问题解决方法》

==================================================================================================

在asp.net2.0中使用Cookie保存中文出现乱码的解决方法


最近工作中遇到在asp.net2.0中使用Cookie保存中文会出现乱码,解决方法是需要对中文内容进行编码和解码,例如:

设置cookie时:


HttpCookie cookie = Request.Cookies["UserName"];
if (Session["UserName"] != null)
{
string userName = Server.UrlEncode(Session["UserName"].ToString());
if (cookie != null)
{
cookie.Value = userName;
//cookie.Expires = DateTime.Now.AddDays(1);
cookie.Domain = BasePage.DomainName;
Response.Cookies.Set(cookie);
}
else
{
cookie = new HttpCookie("UserName");
cookie.Value = userName;
//cookie.Expires = DateTime.Now.AddDays(1);
cookie.Domain = BasePage.DomainName;
Response.Cookies.Add(cookie);
}
}

获取cookie时:


private string _loginUserName;
public string LoginUserName
{
get
{
if (Session["UserName"] != null && Session["UserName"].ToString() != "")
{
_loginUserName = Session["UserName"].ToString();
}
else if (Request.Cookies["UserName"] != null && Request.Cookies["UserName"].Value != "")
{
_loginUserName = Server.UrlDecode(Request.Cookies["UserName"].Value);
}
else
{
_loginUserName = null;
}
return _loginUserName;
}
}

还有一个条件,即配置文件中需要设置中文格式,如:

<!-- 全球化         
此节设置应用程序的全球化设置。    -->
<globalization
requestEncoding="GB2312" responseEncoding="GB2312"/>

---------------------------------------------------------------------------------------------------------------------------

中文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

以上来自百度空间

【转】asp.net Cookie值中文乱码问题解决方法,布布扣,bubuko.com

时间: 2024-10-23 03:57:05

【转】asp.net Cookie值中文乱码问题解决方法的相关文章

zabbix中文乱码问题解决方法(Zabbix 2.2.3)

我把zabbix安装完成后,调整为中文界面,出现乱码. 原因:因为没有中文字体,没有设置显示字体为中文. 解决方法(网络整理收集): 1.获取一个字体文件,上传至zabbixServer的web目录fonts文件夹(/data/www/zabbix/fonts), Windows → 控制面板 → 字体 命名为小写字母 2.修改配置文件,/www/zabbix/include/defines.inc.php //define('ZBX_FONT_NAME', 'DejaVuSans'); def

LoadRunner中文乱码问题解决方法

LoadRunner中文乱码问题解决方法 前段时间在录制,增强,整合LoadRunner脚本,期间两次遇到了中文乱码问题.在此记录一下中文乱码问题的解决办法. 一.录制回放中文乱码 我录制登陆的脚本,用户名中出现中文,回放的时候总是提示登陆失败.如下图: 图1 LR回放中文乱码 解决中文乱码可以在录制的时候在Virtual User Gen的 Tools->Recoding Options -> Advanced -> Support charset -> UTF-8.重新录制后中

soapUI参数中文乱码问题解决方法&amp;soap UI工具进行web接口测试

soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文的,如FangSong 可能方案2: 如果响应报文有乱码,可尝试: file-preferences-http settings,不勾选response compression 注意:前两种修改都要将乱码窗口重新打开才生效. 可能方案3: 编辑soapui.bat文件,在 set JAVA_OPTS

Zip文件中文乱码问题解决方法(MAC-&gt;Windows)

前言: 最近收到的ZIP交互原型,打开查看中文一堆乱码.主要是产品都是高大上啊,用的都是MAC,咱酷毙用的Windows,话说安卓APP,你用MAC搞啥啊.可恨的压缩用的是zip,不是rar之类的.为了咱用Windows开发及测试的屌丝,分享下解决方法.如你高在上,用的MAC,请跳过本文. 目录: 1.问题 2.解决方法 1.问题 现象: a.ZIP文件,360压缩3.1正式版查看.解压中文为乱码. b.ZIP文件,Winrar 3.7压缩查看.解压中文为乱码. 2.解决方法 方法一:安装新版本

WingIDE中文乱码问题解决方法

WingIDE中文乱码问题解决方法 安装完WingIDE后,首次运行python脚本时,若脚本中含有UTF-8中文,在Debug I/O输出框中,全部变成了乱码. 这时其实我们设置下WingIDE的编码方式为UTF-8即可. 具体的方法如下: 依次选择Edit->Preferences ->Debugger ->I/O,将其中的Encoding相关编码都改为UTF-8即可. 具体见下图: 来自为知笔记(Wiz)

struts2中注解redirect时传递参数中文乱码问题解决方法

试过了很多方法  tomcat 编码  .字符串转换编码 .URLEncoder  .. 但是都没解决,后来仔细看了   struts2 的redirect ,redirectAction , 加上 params={"encode","true"} 就不会有乱码了 @Action(value = "/backend/deleteApplyInfoOfAuditById", results = { @Result(name = "succ

asp.net 导出excel 中文乱码解决方法 (转)

用我转载的上一篇文章 Asp.net中把DataTable或DataGrid导出为Excel 导出的文档,中文有乱码现象,其实要解决中文乱码很简单,设置一下字符集.如下: // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312&

j2ee、mvn、eclipse、Tomcat等中文乱码问题解决方法

一.更改jdk默认编码为UTF-8,保证启动的JVM不会出现中文乱码问题 1.在编译的时候,如果我们没有用 -encoding 参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式. JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN7,它的值为GBK),当我们不加设置就编译时,相当于 使用了参数:javac -encoding gbk XX.java,当然就会出现不兼容的情况. 2.下面看一幅图:

中文乱码问题解决方法总结

1 jsp页面显示乱码 将jsp页面首行的 1 <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb18030"%> 中的字符集charset改为"GB18030"或"GB2312" 2 jsp页面传输乱码 在获取参数的jsp页面将获取到的值进行相应的转码 如: 1 String name=