资讯专栏INFORMATION COLUMN

js使用cookie

Riddler / 2280人阅读

摘要:返回值已编码的的副本。其中某些字符被替换成了十六进制的转义序列。

原文地址: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
使用方法
cookie.set("key","value,中文也可以的",30)  //30天后失效

cookie.get("key")   // value,中文也可以的

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91661.html

相关文章

  • js-cookie源码学习

    这篇文章最初发表在我自己搭建的站点js-cookie库源码学习 背景 最近在做项目的时候,前端登录功能要做一个记住密码的功能。但开发用的框架中没有实现这个功能,所以我就想自己实现这个功能。实现起来其实很简单,就是每次用户在登录页面点击登录时,把用户输入的用户名和密码保存到cookie中就可以了,当用户再登录时,再从cookie中获取用户名和密码填充到表单中就可以了。当然,也可以选择保存在local...

    JellyBool 评论0 收藏0
  • Cookie 在前端中的实践

    摘要:是协议中的选项,在新的协议中已经由选项代替,两者的作用都是限制的有效时间。选项用来设置只在确保安全的请求中才会发送。子域,是相对父域来说的,指域名中的每一个段。放在域名最后的子域称为最高级子域,或称为一级域,在它前面的子域称为二级域。 本篇文章的主题,用 Node.js 搭一个服务,来看看 Cookie 的实际应用场景 环境配置 我们新建一个文件 main.js,并在 main.js ...

    codergarden 评论0 收藏0
  • cookie、Sessionstorage、Localstorage快速上手

    摘要:快速上手先说区别数据大小不能超过。可以在后端设置修改,数据仅在本地浏览器保存。数据存储在浏览器仅在浏览器为关闭的状态,关闭窗口后数据就会销毁。默认情况下,属于当前页面。 cookie、Sessionstorage、Localstorage快速上手 先说区别 cookie: 数据大小不能超过4KB。 不管是否有需求,cookie数据都会在HTTP请求中携带,在浏览器和服务器中来回传递,...

    duan199226 评论0 收藏0
  • cookie、Sessionstorage、Localstorage快速上手

    摘要:快速上手先说区别数据大小不能超过。可以在后端设置修改,数据仅在本地浏览器保存。数据存储在浏览器仅在浏览器为关闭的状态,关闭窗口后数据就会销毁。默认情况下,属于当前页面。 cookie、Sessionstorage、Localstorage快速上手 先说区别 cookie: 数据大小不能超过4KB。 不管是否有需求,cookie数据都会在HTTP请求中携带,在浏览器和服务器中来回传递,...

    lvzishen 评论0 收藏0
  • cookie、Sessionstorage、Localstorage快速上手

    摘要:快速上手先说区别数据大小不能超过。可以在后端设置修改,数据仅在本地浏览器保存。数据存储在浏览器仅在浏览器为关闭的状态,关闭窗口后数据就会销毁。默认情况下,属于当前页面。 cookie、Sessionstorage、Localstorage快速上手 先说区别 cookie: 数据大小不能超过4KB。 不管是否有需求,cookie数据都会在HTTP请求中携带,在浏览器和服务器中来回传递,...

    Galence 评论0 收藏0
  • cookie、Sessionstorage、Localstorage快速上手

    摘要:快速上手先说区别数据大小不能超过。可以在后端设置修改,数据仅在本地浏览器保存。数据存储在浏览器仅在浏览器为关闭的状态,关闭窗口后数据就会销毁。默认情况下,属于当前页面。 cookie、Sessionstorage、Localstorage快速上手 先说区别 cookie: 数据大小不能超过4KB。 不管是否有需求,cookie数据都会在HTTP请求中携带,在浏览器和服务器中来回传递,...

    awkj 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<