php设置的中文cookiejs获取乱码解决办法

php两个函数 urlencode  urldecode
 
js两个函数 decodeURI  encodeURI  5.5以前的版本是已经废弃的 escape   unescape 
 
简单示例如下:
 
1、php 设置cookie ,js读取cookie
 
<?php
setcookie ("username", urlencode("中文测试"));
?>
 
<script type="text/javascript">
    alert(decodeURI(getCookie("username")))
    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("username", "我是中国人", 0) 
</script>
 
<?php
echo urldecode($_COOKIE["username"]);
 
?>
 
 
 
3 js设置js读取 php设置php读取方法类似

 function SetCookie(name, value) {
        var exp = new Date();
        exp.setTime(exp.getTime() + 3 * 24 * 60 * 60 * 1000); //3天过期
        document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
        return true;
    };
    function getCookie(name) {
        var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
        if (arr != null) return arr[2]; return null;
    };

 

 var currentServiceAliasName = getCookie("appName");
        var displayName = "";
        if (currentServiceAliasName != null && currentServiceAliasName != "" && currentServiceAliasName != "undefined")
            displayName = decodeURIComponent(currentServiceAliasName) + " . " + counterName;
        else
        displayName = counterName;

decodeURIComponent 用这个转换一下

总结:cookie解决中文乱码问题实质上是就url编码函数之间的转换,小编总结了一下其实小编觉得cookie最好不要使用中文了,中文在这些地方处理不够用了。

时间: 2024-08-01 10:11:28

php设置的中文cookiejs获取乱码解决办法的相关文章

Source Insight 中文注释为乱码解决办法(完美解决,一键搞定)【转】

转自:http://blog.csdn.net/bjarnecpp/article/details/70174752 版权声明:本文为博主原创文章,未经博主允许不得转载. Source Insight中文注释为乱码解决办法 我网上查了一堆解决办法,但是都是2017年以前的,并且都是针对于source insight 3.5及以下版本的解决方案,软件版本都到4.0了,应该有新方法出现. --------------------------------------干货:Source Insight

IntelliJ IDEA中文乱码解决办法

1. 预热 刚刚接触IntelliJ IDEA几天,在易用性方面的确比Eclipse好很多,比较智能,各种插件.工具都已经集成,和Mac OS X类似--开箱即用,并且在试用了之后在开源中国三折(后悔2折的时候没有下手)购买了授权. 但是还是老大难问题--中文乱码,让我不得不花费了一些时间去折腾它,这一点就不如Eclipse了,没有遇到过乱码问题. 乱码问题表现在使用Web Server(Tomcat.Jetty)时输出日志或者直接System.out.println("中文字符")时

asp.net url址址中中文汉字参数传递乱码解决方法

中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下. 在cs文件里传参的时候用UrlEncode: Response.Redirect("B.asp教程x?Name="+Server.UrlEncode(Name)); 接参的时候用UrlDecode: Response.Write(Server.UrlDecode(Request.QueryString["Name"])); 脚本儿里传参的时候用

SQL SERVER2005 中文字符为乱码解决参考方法

SQL SERVER2005 中文字符为乱码解决参考方法 使用SQL SERVER2005的时候常常遇到中文字符为乱码的情况,经过研究发现,设置SQL的排序规则可以解决这个问题. 1.登录服务器打开Microsoft SQL Server Management Studio. 2.在要修改的数据库教程上单击鼠标右键,并选择"属性". 3.在弹出的数据库属性窗口中点击"选择页"中的"选项". 4.将排序规则由默认的SQL_Latin1_Genera

数据库 MySQL中文乱码解决办法总结

MySQL中文乱码解决办法 前言: MySQL是我们项目中非常常用的数据型数据库.但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况.下面就来介绍一下如何彻底解决数据库中文乱码情况. 1.中文乱码 1.1.中文乱码 create table user(name varchar(11)); # 创建user表 insert into table user("carl"); # 添加数据 select * from user; insert into user value(&

关于cookie中文乱码解决办法

关于cookie中文乱码解决办法 后台: 存值 (使用 HttpUtility.UrlEncode 进行编码) Response.Cookies("ABC").Value = HttpUtility.UrlEncode("ABC") 取值 (使用 HttpUtility.UrlDecode 进行解码) Str = HttpUtility.UrlDecode(Request.Cookies("ABC").Value) 和JS进行交互: 在用js生成

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

一.cookie的名称或子cookie的名称不能为中文,否则无法获得cookie 这个好办,名称不用中文即可 二.cookie的值为中文时候,取cookie的值会出现乱码 解决办法:存取cookie时候先解码和编码 存cookie,进行编码: cookie.Value = HttpUtility.UrlEncode("上海"); 取cookie时候,进行解码:cookieValue = HttpUtility.UrlDecode(cookie.Value); 另外注意: 取子cooki

在Jsp程序读取或向DB写入数据乱码解决办法

js|程序|解决|数据 在Jsp程序读取或向DB写入数据乱码解决办法 在基于JAVA的编程中,经常会碰到汉字的处里及显示的问题,比如一大堆乱码或问号.这是因为JAVA中默认的编码方式是UNICODE,而中国人通常使用的文件和DB都是基于GB2312或者BIG5等编码,故会出现此问题.以前我也经常为这个问题而苦恼,后来经查了些资料,终于解决了,我知道一定有很多朋友也会碰到这个问题,所以特就总结了一下,来拿出来让大家一起分享了.1.在网页中输出中文.JAVA在网络传输中使用的编码是"ISO-8859

Jmail发送邮件与带附件乱码解决办法分享

 这篇文章主要介绍了Jmail发送邮件与带附件乱码解决办法,有需要的朋友可以参考一下 Jamil发送邮件的具体用法:   首先,我们要先下载Jamil.dll的组件,然后添加引用using jmail,然后再本机或者服务器上注册一下   将jmail.dll拷贝到服务器的system32目录下,开始-运行-cmd-输入regsvr32 jmail.dll,注册成功,然后写代码   代码如下(方法) 代码如下: using jmail;     protected void sendMail(St