Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с кодировками в HTML и AJAX

32K
22 июня 2008 года
63uK
16 / / 19.04.2008
При выполнении AJAX возникает неприятная вещь, возвращаемые русские символы становятся непонятной кодировкой. Передаю HTML, после приемы данных они обрабатываются JavaScript'ом(вставляются в содержание списка(select)). Кодировка основной страницы windows-1251, такая же и при посылке данных(header("Content-Type: text/html;charset=windows-1251");). Самая интересная особенность, это то, что у меня все отлично работает, но у некоторых возникают знаки вопроса вместо текста. Как можно исправить эту ошибку?
364
23 июня 2008 года
Xupypr
148 / / 20.04.2000
данные в AJAX приходят в кодировке UTF8, так что вариат 1 - перекодировать... либо в скрипте ответ кодировать в UTF8, либо в JS уже в w1251...


... либо делать странице полностью в UTF8
32K
23 июня 2008 года
63uK
16 / / 19.04.2008
К сожалению в UTF-8 уже переделать ничего не получится, так как проект на поздней стадии. А каким же образом можно перекодировать в JavaScript симполы?
364
24 июня 2008 года
Xupypr
148 / / 20.04.2000
iconv — Преобразовывает символы строки в другую кодировку

Описание
string iconv ( string $in_charset, string $out_charset, string $str )

Производит преобразование кодировки символов строки str из начальной кодировки in_charset в конечную out_charset. Возвращает строку в новой кодировке, или FALSE в случае ошибки.

Если добавить //TRANSLIT к параметру out_charset будет включена транслитеризация. Это означает, что вслучае, когда символа нет в конечной кодировке, он заменяется одним или несколькими аналогами. Если добавить //IGNORE, то символы, которых нет в конечной кодировке, будут опущены. Иначе, будет возвращена строка str, обрезанная до первого недопустимого символа.


Пример 892. Пример использования iconv():

<?php
echo iconv("KOI8-U", "UTF-8", "Пора переходить на юникод.");
?>
32K
24 июня 2008 года
63uK
16 / / 19.04.2008
На PHP я это знаю, а вот на JavaScript'e... Ведь у меня после того как приходят данные не выполняется никакие PHP скрипты, поэтому таким способом ничего не получится добиться. Возможно я и неправ и можно как-то динамически выполнить PHP без перегрузки страницы.
364
24 июня 2008 года
Xupypr
148 / / 20.04.2000
Цитата: 63uK
На PHP я это знаю, а вот на JavaScript'e... Ведь у меня после того как приходят данные не выполняется никакие PHP скрипты, поэтому таким способом ничего не получится добиться. Возможно я и неправ и можно как-то динамически выполнить PHP без перегрузки страницы.


Дык данные, которые приходят от скрипта PHP в скрипт JS уже будут кодированны в uft8 и будут отображаться нормально, если их в PHP перекодить.

Я вообще не трогаю кодировку в js, все в PHP скрипте подготавливаю. Работает отлично.

364
24 июня 2008 года
Xupypr
148 / / 20.04.2000
з.ы. заметил такую фразу "у меня все отлично работает, но у некоторых возникают знаки вопроса вместо текста." ... возможно у некоторых кодировка браузера не та??
32K
24 июня 2008 года
63uK
16 / / 19.04.2008
Не думаю, кодировка задается на самой странице, а браузер использовали одинаковой версии и даже сборки.
2.1K
24 июня 2008 года
wAngel
129 / / 23.11.2004
Цитата: 63uK
К сожалению в UTF-8 уже переделать ничего не получится, так как проект на поздней стадии. А каким же образом можно перекодировать в JavaScript симполы?


Пожалуй отвечу второй раз, ибо товарищ действует масштабно, в несколько потоков :)

Что значит, проект в поздней стадии? И чем же это грозит? Он настолько неподдается модернизации? Хороший проект)
Вот тут опять же есть все для преобразования кодировок непосредственно на JS.

Послушайте, что вам пишет Xupypr. Нет смысла доверять обработку кодировка скриптам. Это не очень хороший тон. Самое правильно решение - преобразование кодировки на сервере.

251
25 июня 2008 года
SkyMаn
1.7K / / 31.07.2007
Тоже столкнулся с этим, Опера некоректно отображает символы вин-1251. Ставит вообше исошную кодировку. Юзаю джаваскриптовый фреймворк ExtJS
В остальных браузерах - гуд. А вот в опере надо вручную менять кодировку на win2151..
так что таки джаваскриптовая обработка пригодится..
47K
01 февраля 2010 года
deathonator
5 / / 17.03.2009
вот решение: http://extjs-forum.ru/viewtopic.php?f=5&t=22
386
01 февраля 2010 года
newcss
297 / / 05.04.2005
У аякса есть - бекенд страница и фронтэнд страница.
В PHP есть функция - header - ручками принудительно шлем кодировку и радуемся жизни, ни каких проблем не возникает.
P.S.> Подсказываю - в хедере шлем кодировку нашей основной страницы. Т.к. Страница делает Аякс запрос скрипту, и скрипт выдает ей не только все в 1251, но и принудительно говорит - что информация в такой-то кодировке.
16K
02 февраля 2010 года
k0t
97 / / 23.04.2007
Думаю люди за полтора года разобрались =)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог