原文地点:http://www.maoyupeng.com/use-cookie-on-javascript.html
cookie存储中文乱码题目
运用js时期,假如存储的数据存在中文,则可能会碰到兼容性的题目.我先说说我碰到的题目(不要心急,在后面会供应完全的代码案例):
在
安卓
的手机上运用微信翻开我的测试网页,存储中文没有题目,一切正常(不敢包所以安卓机,横竖我当时用的的小米4是没有碰到有中文乱码的题目)在
ios
的手机上运用微信翻开我的测试网页,存储中文会涌现诡异的题目,具体情况请看示例 ↓
安卓手机
var setAndroidValue = {
cityId: 197,
cityName: '广州'
}
cookie.set('androidTestCookie',setAndroidValue,30);
// 存储胜利后,猎取的值为,一切正常
console.log(JSON.stringify(cookie.get('androidTestCookie'))) //{cityId: 197,cityName: '广州'}
ios手机
var setAndroidValue = {
cityId: 197,
cityName: '广州'
}
cookie.set('androidTestCookie',setAndroidValue,30);
// 存储胜利后,猎取的值缺少了一截,个人预计就是由于碰到中文了,乱码,没有存储进去
console.log(JSON.stringify(cookie.get('androidTestCookie'))) //{cityId: 197,cityName: '
处理存储cookie乱码题目
实在很简单,就是运用了escape()
和unescape()
函数
escape(string)
函数可对字符串举行编码,如许就能够在所有的盘算机上读取该字符串。返回值:已编码的 string 的副本。个中某些字符被替代成了十六进制的转义序列。
unescape(string)
跟escape()
恰好相反,就是解码的
完全的示例代码
var cookie = {
set:function(key,val,time){//设置cookie要领
var date=new Date(); //猎取当前时候
var expiresDays=time; //将date设置为n天今后的时候
date.setTime(date.getTime()+expiresDays*24*3600*1000); //花样化为cookie辨认的时候
document.cookie=key + "=" + escape(val) +";expires="+date.toGMTString(); //设置cookie
},
get:function(key){//猎取cookie要领
/*猎取cookie参数*/
var getCookie = document.cookie.replace(/[ ]/g,""); //猎取cookie,而且将取得的cookie花样化,去掉空格字符
var arrCookie = getCookie.split(";") //将取得的cookie以"分号"为标识 将cookie保存到arrCookie的数组中
var tips; //声明变量tips
for(var i=0;i<arrCookie.length;i++){ //运用for轮回查找cookie中的tips变量
var arr=arrCookie[i].split("="); //将单条cookie用"等号"为标识,将单条cookie保存为arr数组
if(key==arr[0]){ //婚配变量称号,个中arr[0]是指的cookie称号,假如该条变量为tips则实行推断语句中的赋值操纵
tips=arr[1]; //将cookie的值赋给变量tips
break; //停止for轮回遍历
}
}
return unescape(tips);
}
}
运用要领
cookie.set('key','value,中文也能够的',30) //30天后失效
cookie.get('key') // value,中文也能够的