Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Нарушение кодировки при работе с AJAX
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
Сделал AJAX запрос на передачу данных серверу методом POST. Получаю эти данные и просто их вывожу посредством PHP на экрна в div. Результат выводится в кодировке UTF-8. А в браузере стоит windows-1251. Если выбрать, чтобы браузер автоматом определял кодировку, то всё нормально. Но меня такое положение дел не устраивает и хочу сразу перед выводом на экран как-то перекодировать ответ на запрос в windows-1251. Среди PHP функций не нашёл мне нужную. Надеюсь, что данную проблему можно решить как-то по-другому. Может, я запрос неправильно отправляю... Все мои заготовки выкладываю ниже.
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
valenok, спасибо за ответ! Да, я так пробовал делать. И первым, и вторым вариантом. Не работает всё равно. Скриншот окна браузера и меню, где у меня стоит кодировка, прилагаю. Прикреплено изображение (Нажмите для увеличения)
----- Yuriy
evgenijj
Отправлено: 18 Июня, 2007 - 14:59:09
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Я так думаю, это потому, что текст выводится на страницу средствами JavaScript. И JavaScript, считая, что полученные данные в UTF-8, так их и выводит.
Файл test.php
Покинул форум
Сообщений всего: 151
Дата рег-ции: Авг. 2006
Помог: 0 раз(а)
Yuriy
Проблема не в том, в какое кодировке выводить. Проблема скорее всего в том, что ты пытаешся русский текст показывать. А проблема в том, что разработчики UTF8 позабыли на русский язык. Это описано в RFC(номер не припомню сразу), по ссылке я уже приводил пример: http://forum.php.su/topic.php?fo...=40&topic=13
evgenijj
Отправлено: 18 Июня, 2007 - 15:19:09
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
UserID пишет:
Yuriy
Проблема не в том, в какое кодировке выводить. Проблема скорее всего в том, что ты пытаешся русский текст показывать. А проблема в том, что разработчики UTF8 позабыли на русский язык. Это описано в RFC(номер не припомню сразу), по ссылке я уже приводил пример:
http://forum.php.su/topic.php?forum=40&topic=13
Так что делать-то? Я вот сейчас читаю книгу по AJAX. Пока работаю с UTF-8 -- все в порядке. Как только пытаюсь сделать страницу в windows-1251 -- беда.
Приведу исходники, чтобы стало понятнее. Кодировка для HTML-файла указана windows-1251
А данные для работы JavaScript уходят в UTF-8 (в соответствии с заголовком). Отправлять их в windows-1251 я пробовал -- ничего не выходит. Браузер заголовок
<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
воспринимает нормально - и показывает сформированный XML корректно, а JavaScript считает, что данные всегда в UTF-8. Точка.
Здесь я все данные, перед тем как отправлять их JavaScript перекодирую в UTF-8. Но такие перекодировки сильно мешают. Либо уже сразу все делать в UTF-8, либо искать другой путь.
Т.е. текст, который нужно отправить серверу сначала пропускаю через эту функцию. И лично мне кажется, что iconv не на всех серверах можно встретить. А вот str_replace - это завсегда пожалуйста.\n\n(Добавление) evgenijj
И XML-у насколько мне помнится кодировка глубоко цветная штука. Браузер проверяет правильность структуры xml-документа и в случае чего выдаёт ошибку.
evgenijj
Отправлено: 18 Июня, 2007 - 15:40:40
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Спасибо. Попробую. О результатах сообщу.
(Добавление)
У меня все работает -- все данные, полученные от клиента, "прогоняю" через функцию $name = utf8_win( $_GET["name"] );
Чего и всем желаю
Покинул форум
Сообщений всего: 142
Дата рег-ции: Июнь 2007 Откуда: Азов
Помог: 0 раз(а)
Спасибо, ребята, за ответы. UserID, вы не поверите, но всё равно не работает Я вижу выведенный текст, например, таким:
"ЭјЭѕЭ№ С‚ЭµЭєСЃС‚"
, а у вас в функции utf8_win идут такие замены: xD0xB0 и т. п. А что функция будет менять здесь, если совсем другие символы в моей кодировке выше? Очень странно... Или пора ОС переставлять, или я чего-то недопонял.
Ещё раз на всякий случай.
Я заменил в своём коде только содержимое файлы test.php на это:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.