2009-10-27 2 views
1

Я храню китайские символы в cookie, но значение cookie меняется на искаженные символы. Что мне делать?Garbled characters in 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 

ответ

1

Попробуйте это, работает для меня.

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)); 
0

Вы просто должны кодировать значение (и, возможно, имя, если это может содержать китайские иероглифы тоже) перед установкой печенья (я не уверен, что кодирование decodeURI используется, но по-видимому, независимо от кодировки что он имеет глагол кодирования для соответствия декодированному, y? -)