这回直接了当。Django.set_cookie()方法,将Value的值格式化了。。格式如下。。
\347\275\227\345\261\261\345\216\277\347\254\254\344\270\200\345\256\236\351\252\214\345\260\217\345\255\246|102\347\217\255
求前台的解码方法。谢谢了。详情见这个帖子https://www.v2ex.com/t/207446#reply4
1
Anybfans OP |
2
TakanashiAzusa 2015-07-22 15:00:26 +08:00 1
decodeURIComponent(escape('\347\275\227\345\261\261\345\216\277\347\254\254\344\270\200\345\256\236\351\252\214\345\260\217\345\255\246|102\347\217\255'))
|
3
Anybfans OP |
4
TakanashiAzusa 2015-07-22 15:19:38 +08:00
你把'school'和'cookie'都打印出来看看就知道问题出在哪了。。
|
5
Anybfans OP |
6
TakanashiAzusa 2015-07-22 15:37:42 +08:00
@Anybfans 没看明白。你的输出结果上我也没看到有双引号啊。。
|
7
TakanashiAzusa 2015-07-22 15:40:05 +08:00
http://jsbin.com/vubofemebo/edit?html,js,output
你看下这个demo,你要是'cookie'的值输出和截图那个一样的话,是不会有问题的。。 |
8
Anybfans OP |
9
Anybfans OP |
10
Anybfans OP @Anybfans cookie = cookie.replace('"','').replace('"',''); 这个执行也不行。。同样的效果。。
|
11
TakanashiAzusa 2015-07-22 16:09:46 +08:00 1
我不会正则,但是从
来看,你的问题是出在'getCookie'函数上。把这个函数内部那个正则稍微改一下吧。 |
12
Anybfans OP @TakanashiAzusa 好 。我看看。谢谢啦!这个问题究竟了一天了。。后台解决一点问题都没,但是需要一直post。前台搞不定,谢谢你了!
|
13
TakanashiAzusa 2015-07-22 17:34:50 +08:00 1
@Anybfans 我刚刚又研究了下。大概知道问题在哪了。你这里的cookies值的设置方法有问题,cookies的存储方式不变一下的估计无解。。"\"这个符号本来是作为转义字符用的,但是在cookies值里它失去了转义的作用,实际上变成了正常浏览器下的"\\",所以cookies里读出来的"\347\275\227"其实相当于"\\347\\275\\227",自然无法转义。你这里一开始存cookies的时候就应该用'encodeURI'对中文字符进行转码。另外'\347\275\227'这种字符编码是啥鬼,我想了半天没找出来对应哪个编码方式
|
14
Anybfans OP @TakanashiAzusa
后台是django 设置的cookie. 用的set_cookie. 刚开始我也找了源码。设置的 时候会对这个value进行str()强制转换。转换完就这样了。。因为这个value是unicode 不知道为什么str()以后就这样子了。。 |
15
TakanashiAzusa 2015-07-22 17:44:22 +08:00 1
@TakanashiAzusa 感觉我这里的解释好像还是有点问题。字符集这部分还是有点问题。。“\347\275\227”这种应该是所谓的汉字八进制转义方法,但是从cookies里取出来之后就全部都成utf8了,变成了普通了字符串,所以escape不了。
好像还是有点混乱,看看有没有前端牛能解释这个问题吧。不过反正我还是建议你存cookies的时候换个编码方式比较好。。 |
16
Anybfans OP |
17
happyjohann 2017-02-15 12:00:01 +08:00
@Anybfans 我也遇到了同样的问题,请问你找到解决办法了吗?
|