美文网首页
js使用cookie

js使用cookie

作者: 毛宇鹏 | 来源:发表于2016-12-13 14:57 被阅读81次

原文地址:http://www.maoyupeng.com/use-cookie-on-javascript.html

cookie存储中文乱码问题

使用js期间,如果存储的数据存在中文,则可能会遇到兼容性的问题.我先说说我遇到的问题(不要心急,在后面会提供完整的代码案例):

  1. 安卓的手机上使用微信打开我的测试网页,存储中文没有问题,一切正常(不敢包所以安卓机,反正我当时用的的小米4是没有遇到有中文乱码的问题)
  2. 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,中文也可以的

相关文章

  • js cookie

    js设置cookie js获取cookie //使用方式: 给cookie设置终止日期 例如:如果要将cookie...

  • 轻量级JS Cookie插件js-cookie的使用方法

    js-cookieGitHub地址js-cookie具体使用 js-cookie插件是一个JS操作cookie的插...

  • React-Cookie

    github地址:github.com/js-cookie/js-cookie 在react中使用cookie: ...

  • Cookie使用

    介绍两种cookie的使用方法 原生cookie js-cookie插件 区别 js-cookie插件将原生coo...

  • cookie.js随记

    cookie: 使用jquery的插件:jquery.cookie.js库: jquery.js插件:jquer...

  • vue之vue-cookies

    npm链接 安装 使用(main.js) API 设置 cookie: 获取cookie 删除 cookie 查看...

  • (转)细说Cookie

    细说Cookie 阅读目录 开始 Cookie 概述 Cookie的写、读过程 使用Cookie保存复杂对象 Js...

  • 存取cookie里面的值

    使用js-cookie插件 1、安装插件 npm install js-cookie --save 2、存值 im...

  • js获取cookie

    纯js使用cookie时首先要在 中写入使用cookie的方法,或者将方法另存在指定的js文件中,使用外链引入,...

  • cookie的创建、读取和删除

    1, cookie的创建、读取和删除 在JS中,可以使用Document对象的cookie属性操作cookie。 ...

网友评论

      本文标题:js使用cookie

      本文链接:https://www.haomeiwen.com/subject/fvqbmttx.html