第三次来问了。。原谅我的无知。[:doge:]

2015-07-22 14:49:56 +08:00
 Anybfans

这回直接了当。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

2496 次点击
所在节点    问与答
17 条回复
Anybfans
2015-07-22 14:50:32 +08:00
TakanashiAzusa
2015-07-22 15:00:26 +08:00
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'))
Anybfans
2015-07-22 15:11:21 +08:00
@TakanashiAzusa 超级感谢。。纠结了一早上的问题。。终于解决了。

可是还是有一点小小的问题。。在chrome的命令行里面执行是正确的。但是在代码中转了无效。。拜托 具体代码如下
TakanashiAzusa
2015-07-22 15:19:38 +08:00
你把'school'和'cookie'都打印出来看看就知道问题出在哪了。。
Anybfans
2015-07-22 15:27:55 +08:00
@TakanashiAzusa ..我测试了一下是多双引号,但是我.replace(/\"/g, "")还是不行。。 应该改还是双引号的问题。。
TakanashiAzusa
2015-07-22 15:37:42 +08:00
@Anybfans 没看明白。你的输出结果上我也没看到有双引号啊。。
TakanashiAzusa
2015-07-22 15:40:05 +08:00
http://jsbin.com/vubofemebo/edit?html,js,output
你看下这个demo,你要是'cookie'的值输出和截图那个一样的话,是不会有问题的。。
Anybfans
2015-07-22 15:56:03 +08:00
@TakanashiAzusa
双引号的问题。。解决不了。。前端太差劲了。
Anybfans
2015-07-22 15:57:25 +08:00
@TakanashiAzusa

这个是完整的。。
Anybfans
2015-07-22 15:59:24 +08:00
@Anybfans cookie = cookie.replace('"','').replace('"',''); 这个执行也不行。。同样的效果。。
TakanashiAzusa
2015-07-22 16:09:46 +08:00
我不会正则,但是从

来看,你的问题是出在'getCookie'函数上。把这个函数内部那个正则稍微改一下吧。
Anybfans
2015-07-22 16:11:39 +08:00
@TakanashiAzusa 好 。我看看。谢谢啦!这个问题究竟了一天了。。后台解决一点问题都没,但是需要一直post。前台搞不定,谢谢你了!
TakanashiAzusa
2015-07-22 17:34:50 +08:00
@Anybfans 我刚刚又研究了下。大概知道问题在哪了。你这里的cookies值的设置方法有问题,cookies的存储方式不变一下的估计无解。。"\"这个符号本来是作为转义字符用的,但是在cookies值里它失去了转义的作用,实际上变成了正常浏览器下的"\\",所以cookies里读出来的"\347\275\227"其实相当于"\\347\\275\\227",自然无法转义。你这里一开始存cookies的时候就应该用'encodeURI'对中文字符进行转码。另外'\347\275\227'这种字符编码是啥鬼,我想了半天没找出来对应哪个编码方式
Anybfans
2015-07-22 17:42:39 +08:00
@TakanashiAzusa

后台是django 设置的cookie.
用的set_cookie. 刚开始我也找了源码。设置的 时候会对这个value进行str()强制转换。转换完就这样了。。因为这个value是unicode 不知道为什么str()以后就这样子了。。
TakanashiAzusa
2015-07-22 17:44:22 +08:00
@TakanashiAzusa 感觉我这里的解释好像还是有点问题。字符集这部分还是有点问题。。“\347\275\227”这种应该是所谓的汉字八进制转义方法,但是从cookies里取出来之后就全部都成utf8了,变成了普通了字符串,所以escape不了。

好像还是有点混乱,看看有没有前端牛能解释这个问题吧。不过反正我还是建议你存cookies的时候换个编码方式比较好。。
Anybfans
2015-07-22 17:48:03 +08:00
@TakanashiAzusa 调了这个方法,好像没办法换编码方式。也很无奈。
现在的解决方法是不在前台进行cookie判断了,全部发送到后台 。然后判断cookie..
O(∩_∩)O 谢谢你了。
happyjohann
2017-02-15 12:00:01 +08:00
@Anybfans 我也遇到了同样的问题,请问你找到解决办法了吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/207515

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX