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最好不要使用中文了,中文在这些地方处理不够用了。