Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как экранировать строки? кирилица кракозябрами в cookie 
:(
    Опции темы
Sardar
Дата 13.7.2005, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Reptor выкладывай код, как PHP так и JS, весь код, мы не телепаты.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Reptor
Дата 13.7.2005, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Вот код на ПХПХ

Код

$all_car="автобус";
rawurlencode(iconv("windows-1251", "UTF-8", $all_car));
setcookie('cars', $all_car);


а вот JS который берёт куку

Код

var arg = "cars=";
     var alen = arg.length;
     var clen = document.cookie.length;
     var endstr = 0;
     var i = 0;
     while (i < clen)
     {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg){
             endstr = document.cookie.indexOf (";", j);
             if (endstr == -1){
                  endstr = document.cookie.length;
             }
             value=decodeURIComponent(document.cookie.substring(j, endstr));
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) { break; }
      }


вотето вот value надо получить в нормальном русском тексте
PM MAIL ICQ   Вверх
Sardar
Дата 13.7.2005, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Reptor угу, только нужно знать что строки в PHP не изменяемые и функция rawurlencode возвращает строку с результатом smile

Если не понял, то поставь echo $all_car, а затем перед rawurlencode поставь echo, сравни полученные строки.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Reptor
Дата 13.7.2005, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Sardar Полученные строки совершенно разные как быть?

PM MAIL ICQ   Вверх
Sardar
Дата 13.7.2005, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Повторяю, смотрим прототип функции rawurlencode, убеждаемся что функция возвращает строку, если по прототипу не видно, то перечитываем описание к функции.

Думаем. Видать это возвращаемое значение и есть то что нам нужно! smile
Ещё раз думаем.

Если не получаеться smile

Код
$all_car="автобус";
$all_car=rawurlencode(iconv("windows-1251", "UTF-8", $all_car));
setcookie('cars', $all_car);

При этом твой редактор должен сохранять .php файл в кодировке windows-1251. А работал бы PHP в юникоде, проблем бы не было.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 13.7.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Ну наверное так:
Код

$all_car = "автобус";
$all_car = rawurlencode(iconv("windows-1251", "UTF-8", $all_car));
setcookie('cars', $all_car);

Добавлено @ 20:13
ой...пока писал Сардар уже все написал smile
PM MAIL WWW ICQ Skype   Вверх
Reptor
Дата 13.7.2005, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



ну так совсем нечего не выходит я уже как тоглько непробывал
PM MAIL ICQ   Вверх
Sardar
Дата 13.7.2005, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Reptor в смысле не выходит? Поставь куку как сказанно выше, затем распечатай document.cookie на клиенте и скинь сюда. Чудес не бывает smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Aliance
Дата 13.7.2005, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



И еще учти это и это.
PM MAIL WWW ICQ Skype   Вверх
Reptor
Дата 13.7.2005, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



вот такое вот значение храниться в куки
-%21--%21--%21-%25E0%25E2%25F2%25EE%25E1%25F3%25F1

а потом делаю декодирование и вообще выводит undefine и зделал так как было сказано выше
PM MAIL ICQ   Вверх
Sardar
Дата 14.7.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Упс, оказываеться PHP сам экранирует строки в url, следовательно rawurlencode не нужен, хотя от него помимо увеличения размеа куки никаких проблем более нет.

Код
$all_car="автобус";
setcookie('cars', iconv("windows-1251", "UTF-8", $all_car), time()+60*20); //ставим куку на 20 минут


Читаем куку:
Код
function getCookie (name) {
    var prefix = name + "=";
    var cookieStartIndex = document.cookie.indexOf(prefix);
    if (cookieStartIndex == -1) return null;
    var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
    if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length;
    return document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex);
} 

var cars=getCookie("cars");
if(cars) alert(decodeURIComponent(cars));
else alert("Cookie is empty or not set");



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Reptor
Дата 15.7.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1213
Регистрация: 29.12.2004

Репутация: нет
Всего: 0



Sardar огромное спасибо наконецто всё нормально
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.