Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > COOKIE чиитаются в неправильной кодировке


Автор: DjoNIK 26.4.2007, 20:51
Проблема:
Cookies-ы, установленые на клиентской машине  JavaScript-ом, считываются на сервере простеньким скриптом:
Код

if ($_COOKIE['firstname'])
    {
        $name = $_COOKIE['firstname'];
    }
else
    {
        $name = "Человек";
    }
.
Сам файл cookies-ов хранит значение в правильной кодировке (я думаю, что проблема именно в кодировке).
Под IE (6...7) всё работает как надо, под OPERA (8...9,02) отображает не пойми что (для русских "ррр" из cookies-ов, например, это выглядит как "@@@").
Помогите, чем могите smile.

Автор: Всемогущий 26.4.2007, 20:59
если вообще ничего не выйдет Base64 кодировать куки http://www.webtoolkit.info/javascript-base64.html
а потом раскодировать с помощю php

Автор: DjoNIK 26.4.2007, 21:14
JavaScript::escape() конечно можно ещё, но я не знаю какой функцией в php обратно в нормальные символы перевести

Автор: Всемогущий 27.4.2007, 17:26
http://www.php.slaed.net/f/base64-decode.html

Автор: DjoNIK 28.4.2007, 21:15
Если http://www.php.slaed.net/f/base64-decode.html - ответ на JavaScript::escape(), то  я чего-то не пойму, помоему под base64 в Java нет свой функции, её либо искать надо, либо самому написать (что я и зделал).

Автор: Всемогущий 29.4.2007, 07:27
я же в первом посте дал ссылку на то как кодировать в javascript

Добавлено через 2 минуты и 1 секунду
Я понял в чём главная ошибка:до того как писать что то в куки переводим текст в utf8 

Автор: DjoNIK 29.5.2007, 20:49
В процессе использования данного метода выявился досадный недочёт...
Когда я кодирую джавой строку русских символов в БАСЕ64 на выходе может получится строка, содержащая символы +-ы. 
Мне необходимо передать эти данные через ГЕТ в пхп-шный скрипт и раскодировать эту строку в исходную. Но пхп-скрипт
судя по-всему заменяет все +-ы из ГЕТ-а на пробелы, и при раскодировке получается совсем не то, что хотелось
бы :(
Так вот проблема решается довольно просто:
 а) В джаве encodeURIComponent(enBASE64(str))
 б)В  ПХП base64_decode($str);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)