Искаженные символы в печенье - PullRequest
1 голос
/ 27 октября 2009

Я сохраняю китайские символы в 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 ]

1 голос
/ 27 октября 2009

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

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 голосов
/ 27 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...