Проблема с кодировкой при получении данных из Мозиллы

aleks_malcev

Новичок
Проблема с кодировкой при получении данных из Мозиллы

Всем доброе время суток!
Столкнулся с проблемкой может кто нить что то подскажет или покажет направление куда рыть, заранее благодарен!
При передаче на сервер строковых значений с помощью XMLHttpRequest "едет кодировка". Причем с IE проблемы нет, только с Мозиллой
 

aleks_malcev

Новичок
Автор оригинала: Апокалипсис
utf8 <-> windows 1251

Сорри, не совсем понял что нужно сделать.
Может немного уточню ситуацию:
- Выдаю страничку в кодировке windows 1251, броузер видит все нормально.
- По событию собираю данные со страницы (alert показывает нормальные символы) передаю с помощью XMLHttpRequest методом get
- При получении на сервере в массиве $_GET['str_data'] оказываются "испорченные" символы
Кто их портит? :)
 

aleks_malcev

Новичок
Автор оригинала: Апокалипсис
Почитай тут: http://dklab.ru/lib/JsHttpRequest/manual.html
Раздел-> Решение проблемы с кодировками
Спасибо за ответы. Прочитал, пока не все понятно, но похоже это поможет разобраться в вопросе.
Что немного удивляет почему при работе IE все проходит нормально, видимо это связанно с тем как работает компонент
XMLHttpRequest в этом броузере.

P.S. Вот что еще нашел по этому вопросу:

Для начала надо понимать что в соответствии с официальной спецификацией URI(URL) (http://www.ietf.org/rfc/rfc3986.txt), все символы не входящие в набор US-ASCII должны кодироваться как %код. Т.к. Вы пользуетесь методом GET то естественно все поля Вашей формы передаются как части URL. Естественно, русских букв в US-ASCII нет, и браузер их при передаче кодирует. Набирая русские буквы в URL напрямую Вы нарушаете стандарт. источник: http://xpoint.ru/forums/programming/cgi_ssi/thread/39050.xhtml

Вывод такой, либо передавать параметры методом Post либо воспользоваться методикой на которую указал Апокалипсис, т.е. перед отправкой кодировать русский текст, после приема раскодировать.

P.S. (2) Небольшое примечание в догонку :)
Когда начал передавать параметры методом POST, то кодировка "поехала" уже и в IE :) Это и не удивительно, так как при работе с XMLHttpRequest и передаче параметров методом POST необходимо выставить заголовок contentType='application/x-www-form-urlencoded' который заставляет броузер закодировать параметры. Но зато и IE и Мозилла начали вести себя одинаково.
Теперь при приеме параметров делаем следующее:
PHP:
$val = $_POST['moi_param_name'];
$val = mb_convert_encoding($val, 'Windows-1251', 'UTF-8');
и всё красиво. Просьба, если кто то знает, что так делать не хорошо напишите...
 
Сверху