代码之家  ›  专栏  ›  技术社区  ›  Billy

饼干中的乱码字符

  •  1
  • Billy  · 技术社区  · 16 年前

    我在cookie中存储了汉字,但cookie值变为乱码。我该怎么办?

    function createCookie(name, value, days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 1000 * 60 * 60 * 24));
            var expires = "; expires=" + date.toGMTString();
        }
        else var expires = "";
        document.cookie = name + "=" + value + expires + "; path=/";
    }
    
    createCookie("city", decodeURI('%e6%b8%a9%e5%b7%9e%e5%b8%82'));
    alert(decodeURI('%e6%b8%a9%e5%b7%9e%e5%b8%82')); // The Chinese characters are correct
    alert(document.cookie); //The Chinese characters are corrupted
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   o.k.w    16 年前

    试试这个,对我有效。

    createCookie("city", '%e6%b8%a9%e5%b7%9e%e5%b8%82'); //do not decode chinese characters
    alert(decodeURI('%e6%b8%a9%e5%b7%9e%e5%b8%82')); 
    alert(decodeURI(document.cookie)); 
    
        2
  •  0
  •   Alex Martelli    16 年前

    在设置cookie之前,您只需对值进行编码(如果可以包含中文字符,也可以对名称进行编码)(我不确定是什么编码 decodeURI 使用,但大概是,无论它使用什么编码,它都有一个编码动词来匹配解码动词y?-)