V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Anybfans
V2EX  ›  问与答

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

  •  
  •   Anybfans · 2015-07-22 14:49:56 +08:00 · 2450 次点击
    这是一个创建于 3394 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    17 条回复    2017-02-15 12:00:01 +08:00
    Anybfans
        1
    Anybfans  
    OP
       2015-07-22 14:50:32 +08:00
    TakanashiAzusa
        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'))
    Anybfans
        3
    Anybfans  
    OP
       2015-07-22 15:11:21 +08:00
    @TakanashiAzusa 超级感谢。。纠结了一早上的问题。。终于解决了。

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

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

    来看,你的问题是出在'getCookie'函数上。把这个函数内部那个正则稍微改一下吧。
    Anybfans
        12
    Anybfans  
    OP
       2015-07-22 16:11:39 +08:00
    @TakanashiAzusa 好 。我看看。谢谢啦!这个问题究竟了一天了。。后台解决一点问题都没,但是需要一直post。前台搞不定,谢谢你了!
    TakanashiAzusa
        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'这种字符编码是啥鬼,我想了半天没找出来对应哪个编码方式
    Anybfans
        14
    Anybfans  
    OP
       2015-07-22 17:42:39 +08:00
    @TakanashiAzusa

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

    好像还是有点混乱,看看有没有前端牛能解释这个问题吧。不过反正我还是建议你存cookies的时候换个编码方式比较好。。
    Anybfans
        16
    Anybfans  
    OP
       2015-07-22 17:48:03 +08:00
    @TakanashiAzusa 调了这个方法,好像没办法换编码方式。也很无奈。
    现在的解决方法是不在前台进行cookie判断了,全部发送到后台 。然后判断cookie..
    O(∩_∩)O 谢谢你了。
    happyjohann
        17
    happyjohann  
       2017-02-15 12:00:01 +08:00
    @Anybfans 我也遇到了同样的问题,请问你找到解决办法了吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1061 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:39 · PVG 03:39 · LAX 11:39 · JFK 14:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.