@noname2

Почему русские слова не добавляются в cookie в safari, а в opera отображаются?

Добавляю cookie через javascript. Данные приходят через json, поэтому такой вывод.
var req = jQuery.parseJSON(json);
var date = new Date(new Date().getTime() + 60*60*24*365*1000*10);
document.cookie = "city="+req.city+"; path=/; expires=" + date.toGMTString();
document.cookie = "id="+req.id+"; path=/; expires=" + date.toGMTString();
document.cookie = "hash="+req.hash+"; path=/; expires=" + date.toGMTString();
document.cookie = "text=казань; path=/; expires=" + date.toGMTString();

Сложность в том, что после события, данные с кириллицей не записываются в cookie и не отображаются в safari. Более того, сафари устанавливает время этих данных в текущий сеанс и удаляет после закрытия браузера. Опера же прекрасно их сохраняет. В чем может быть дело?

Safari (city):
7152981ef35a4aceb4efcaa1bdf4b6af.png
Opera (city)
4f6a24335a284c8cb7bec24b53b84093.png
  • Вопрос задан
  • 1555 просмотров
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Перед сохранением в cookie, кодируйте свою строку с помощью encodeURIComponent

При чтении, декодируйте обратно с помощью decodeURIComponent

Несмотря на то что современные cookie поддерживают Unicode, не всегда можно его туда записать.
Изучите эту статью: stackoverflow.com/questions/1969232/allowed-charac...

Все зависит от браузера, Safari например UTF не сохраняет. Так что, кодируйте свои строки.

Для работы с Cookie, лучше всего использовать специальную библиотеку, которая из коробки умеет все это делать и обладает удобным API: https://github.com/js-cookie/js-cookie
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы