我在做的项目中分别涉及到 angularjs 与 javascript 两种前端语句。都需要针对 cookie 信息进行操作。
angularjs 语言设置cookies(angularjs 是自动加密的),代码如下:
$cookieStore.put('realname', result3.realname)
javascript 取出 cookie,代码如下:
var realname = mycookie.get("realname");
var mycookie = {//获取 get : function(name){ var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) return unescape(arr[2]); return null; } }
取出的却是乱码:
"æºæåè´¦å·æèµæ¹"
向各位大神求解其中的玄妙。
数字、字母都没有问题,只有汉字会有乱码的问题。
我觉得问题可能出在两种前端语言针对汉字存储cookie的编码格式
javascript获取cookie,你最后返回return unescape(arr[2]); 为什么要用unescape解密,你angularjs没有用Escape加密cookie呀?
angularjs 是自动加密存到cookie中的,jquery 取出时就需要亲自来解密了。
获取为什么不用 $cookieStore.get ?
你页面编码要设置
<meta charset="UTF-8">
我使用jquery取cookie的页面不能使用angularjs技术了,有原因。
我存cookie和取cookie的页面都有设置 <meta charset="UTF-8">
@那后来呢: 那你存的时候 escape 一下,对应 unescape
@Yu: angularjs 是自动加密存到cookie中的,jquery 取出时我也是解密后取的。
@那后来呢: $cookieStore.put('realname', escape(result3.realname)) 试试这样
@Yu: 朋友,angularjs是自动加密的,再加密又有什么意思呢?
@那后来呢: 那就用 decodeURI 解密 arr[2],不是用 unescape