GVKun编程网logo

cookie 中文乱码解决(php/js)(cookie乱码问题)

6

在本文中,我们将为您详细介绍cookie中文乱码解决的相关知识,并且为您解答关于php/js的疑问,此外,我们还会提供一些关于AJAX中文乱码PHP完美解决(IE和Firefox兼容)、asp.net

在本文中,我们将为您详细介绍cookie 中文乱码解决的相关知识,并且为您解答关于php/js的疑问,此外,我们还会提供一些关于AJAX中文乱码PHP完美解决(IE和Firefox兼容)、asp.net Cookie值中文乱码问题、asp.net Cookie值中文乱码问题解决方法、C# .net中cookie值为中文时的乱码解决方法的有用信息。

本文目录一览:

cookie 中文乱码解决(php/js)(cookie乱码问题)

hp 两个函数 urlencode  urldecode

js 两个函数 decodeURI  encodeURI  5.5 以前的版本是 escape   unescape

简单示例如下:

1、php 设置 cookie ,js 读取 cookie

<?php
setcookie ("TestCookie", urlencode("这就是网页21"));
?>
<script type="text/javascript">
    alert(decodeURI(getCookie("TestCookie")))
    function getCookie(sName) {
    var aCookie = document.cookie.split(''; '');
    for (var i=0; i < aCookie.length; i++) {
    var aCrumb = aCookie[i].split(''='');
    if (sName == aCrumb[0])
    return decodeURI(aCrumb[1]);
 }
 return '''';
}

</script>

2、js 设置 cookie php 读取 cookie

<script type="text/javascript">
function setCookie(name, value, time){
    var nameString = name + ''='' + encodeURI(value);
    var expiryString = "";
    if(time !== 0) {
        var expdate = new Date();
        if(time == null || isNaN(time)) time = 60*60*1000;
        expdate.setTime(expdate.getTime() +  time);
     expiryString = '' ;expires = ''+ expdate.toGMTString();
 }
 var path = " ;path =/";
 document.cookie = nameString + expiryString + path;
}
setCookie("TestJsCookie", "我是中国人", 0)  
</script>
<?php
echo urldecode($_COOKIE["TestJsCookie"]);

?>

 

3 js 设置 js 读取 php 设置 php 读取方法类似

总结:cookie 解决中文乱码问题实质上是就 url 编码函数之间的转换

AJAX中文乱码PHP完美解决(IE和Firefox兼容)

AJAX中文乱码PHP完美解决(IE和Firefox兼容)

最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美解决,现将心得写下来,希望对那些还困绕在这个问题而头痛不已的人们有所帮助。


众所周知,使用AJAX传送和接收中文参数时,如果不在客户端和服务器做相应的处理就会出现乱码问题,在网上相应的文章也不少,但是有的情况下很难从中找到符合自己理想的答案,我今天就是在网上找了很多,但是都差不多,讲ASP和JSP的比较多(我是用的PHP),所以到最后都没找到自己满意的答案。


AJAX的中文乱码可以大概分为两中,第一种是向服务器端发送中文参数时(xmlhttp.open(“get|post”,url,true)),服务器端接收到的为乱码,这个也是我今天遇到的问题,没做处理之前,在IE里是正常的,但是在Firefox里面就出现了乱码,我先把接收到参数输出到一个文本里,没有发现什么问题,郁闷了,然后我就把查询语句在输出来观察(我这里是要从数据库里查出与参数相关的东西),终于发现问题,IE和Firefox输出的参数不一样,虽然汉字上都一样,但是和前后连接上有细小的区别,于是认定了是编码问题,在网上查找了相关资料,都没能解决问题,但是得到一些启示,因为AJAX发送数据都是采用UTF-8编码的方式发送的,所以要在服务器端进行编码转换(我这里页面是采用GB2312编码的,如果是采用UTF-8的话应该不会有这步的问题),所以我在服务器端进行了UTF-8转GB2312,


$str=iconv("UTF-8","GB2312",$str);


然后测试,在Firefox上顺利解决了问题,以为大公告成了,可是再到IE下测试,发现IE又出现了问题,服务器端接收到的参数没值,这下就郁闷了,突然看到发送头设置了setRequestHeader("Content-Type","application/x-www-form-urlencoded");,就找到问题所在了,然后就在发送那里进行了参数编码:


geturl=encodeURI(geturl);

geturl=encodeURI(geturl); //两次也可以写成geturl=encodeURI(encodeURI(geturl));

xmlhttp.open("GET",geturl,true);


然后再到服务器端进行URL解码:


$str=urldecode($str); //解码

$ str =iconv("UTF-8",$ str); //编码转换


注意:解码必须在编码转换前面,不然得不到正确值


保存测试,IE和Firefox都能正常了。


第二种就是服务器端向客户端输出中文时出现乱码,这类问题网上的答案就比较多了,也都能解决,为了避免各位再去查找,我在这里就copY下J


原因:AJAX在接收responseText或responseXML的值的时候是按照UTF-8的格式来解码的,如果服务器段发送的数据不是UTF-8的格式,那么接收responseText或responseXML的值有可能为乱码。


解决办法:


在服务器指定发送数据的格式:
在jsp文件中:
response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
或是
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件

PHP:header('Content-Type:text/html;charset=GB2312'); ASP:Response.Charset("GB2312") JSP:response.setHeader("Charset","GB2312");

asp.net Cookie值中文乱码问题

asp.net Cookie值中文乱码问题

ookie里面不能写中文,是由于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.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中的各种乱码问题总结
  • 解决asp.net core在输出中文时乱码的问题
  • .net从服务器下载文件中文名乱码解决方案
  • .NET中文乱码的解决方法分享
  • ASP.NET中Request.Form中文乱码的解决方法
  • asp.net URL中包含中文参数造成乱码的解决方法
  • .net6环境下使用RestSharp请求GBK编码网页乱码的解决方案

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

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

在学习当中碰到cookie中文乱码问题,问题原因:cookie对中文不太支持,将中文放入cookie中会报错误。

   解决办法:

      1.编码

        将中文进行编码再放入cookie中:

        String username1 = URLEncoder.encode(username, "utf-8");

        String userpwd1 = URLEncoder.encode(userpwd, "utf-8");

        其中username和userpwd其中有中文,username1和userpwd1是进行编码之后的字符串。

        比如:(我这里做的是三天免登陆)

        Cookie loginCookie = new Cookie("loginCookie",username1+":"+userpwd1);

        //将编码后的内容放到Cookie中

        loginCookie.setMaxAge(24*3600);

        //设置loginCookie的有效期3天 24小时*60分钟*60秒

        resp.addCookie(loginCookie);

         //将loginCookie响应到浏览器

      2.解码(如果不进行解码,页面会获取的是base64编码后的内容)

        String unamePwd = URLDecoder.decode(cookies[i].getValue(),"utf-8"); 

        其中cookies[i].getValue()是要进行解码的内容,根据自己的情况进行修改。

        我的代码:

//创建存放用户名密码的map
Map<String,String> loginMap = new HashMap<String,String>();

//获取cookies
Cookie[] cookies = req.getCookies();
//进行判断
if(cookies!=null) {
  for(int i=0;i<cookies.length;i++) {
    if(cookies[i].getName().equals("loginCookie")) {
      String unamePwd = URLDecoder.decode(cookies[i].getValue(),"utf-8");
      String[] up = unamePwd.split(":");
      loginMap.put(up[0], up[1]);
      req.getSession().setAttribute("loginMap",loginMap);
    }
  }
}

 

   这样问题就解决了。

今天的关于cookie 中文乱码解决php/js的分享已经结束,谢谢您的关注,如果想了解更多关于AJAX中文乱码PHP完美解决(IE和Firefox兼容)、asp.net Cookie值中文乱码问题、asp.net Cookie值中文乱码问题解决方法、C# .net中cookie值为中文时的乱码解决方法的相关知识,请在本站进行查询。

本文标签:

上一篇Swift-将整数转换为小时/分钟/秒(整数转换成时间格式)

下一篇JavaScript (js) 前台 参数传递乱码 转码 问题 -- 已解决! 中文字符乱码(前端参数乱码)