Ajax и кодировка запросов
Буржуй ваш - таблетки наши. Конверт просто улётный! GlavMed.com
Неотъемлемая часть Web2.0 проекта использование интерактивного интерфейса, реализацию который приобрел лице Ajax. Я уже немного касался этой темы и сейчас, когда вплотную поставил себя в условия изучения этой технологии обнаружил, что как и любая технология она имеет свои подвохи.
AJAX (от англ. Asynchronous JavaScript and XML — «асинхронный JavaScript и XML») — это подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате при обновлении данных веб-страница не перезагружается полностью, и веб-приложения могут быть сделаны более быстрыми и удобными.

Описывать основы работы Ajax с PHP я не стану, поскольку об этом есть много статей и общеступной информации. Все и так могут скачать Ajax скрипты и изучить работу основного компонета XMLHttpRequest.
Сейчас же хочется в качестве полезной заметки описать решение, которое я использовал для борьбы с неправильной кодировкой запроса, в частности при посылке его пользователем через браузер Opera. Ситуация такова:
- Браузер IE, заполняется форма, через Ajax отправляется в скрипт PHP, где происходит insert в базу. В результате в базе текст в номальной кодировке.
- Браузер IE, теми же данными заполняется форма, через Ajax отправляется в скрипт PHP, где происходит insert в базу. В результате в базе текст в непонятной кодировке.
Первое, что приходит на ум, проверить кодировку. Недолго серфя по инету находим функцию mb_detect_encoding, но и с ее помощью кодировку не получается определить нормально. В итоге находится функция mb_convert_encoding, которая умеет перекодировать текстовые данные и получаю немного подогнав ответ:
$encoded_data=mb_convert_encoding($_GET['data'],'Windows-1251','UTF-8');
$data=(mb_detect_encoding($_GET['data'],"auto",true)=='')?$_GET['data']:$encoded_data;
$data=trim(strtolower($data));
Только подобные преобразования get запроса от javascript в исполняемом PHP файлике помогают справиться с неправльной кодировкой для обоих браузеров и русский текст инсертится в базу с любой кодировкой... Разбираюсь дальше, а пока.
Maxsite тоже борется с кодировкой
ну надо же. Притяжение, чтоли опять, или я просто фрик-идеями себе забиваю голову? А вто Zpro до сих пор еще не осознал, что осень - это пора депрессий, а значит даже малейшее несоотвествие реальности своим идеям и желаниям приводит к негативным мыслям или их отсутствию. Осознание проблемы ~ это решение проблемы.
Вот такие javascript штуки мне не очень понятны, но надеюсь скоро освою все в полной мере.
Форум вебмастеров
Похожие посты:
8 Комментов к “Ajax и кодировка запросов”
Оставить коммент
Donation Bar
- Как сюда попасть
- Блог о доменных именах (5.1$)
- Заработок в интернет (5$)
- Магазин духов с феромонами (2$)
- Арбитраж трафика. Обзор бирж трафика (2$)
- Блог Поискового Робота (1.51$)

Опубликовал cross в
Открой Интернет для Своего Бизнеса » 5 тормозов Интернет-Бизнеса в Беларуси :
[...] Ли Информация По Бизнес Планированию? Артем Шимко – Ajax и кодировка запросов WebMilk.ru – Объем рекламы в онлайн-версиях газет вырос на [...]
Ошибки Ajax :
[...] когда писал пост про кодировку Ajax, решил проанализировать, что же нужно людям по данной [...]
GPS для нашей жизни | Scribe.org.ua :
[...] пишет Cross, осень – это пора депрессий. Действительно, осенью и [...]
spir_it :
$encoded_data = mb_convert_encoding($_GET['letters'],'Windows-1251','UTF-8');
if ($encoded_data == "") $encoded_data = $_GET['letters'];
$letters=(mb_detect_encoding($_GET['letters'],"auto",true)!='UTF-8')?$_GET['letters']: $encoded_data;
$letters=trim(strtolower($letters));
у меня заработало так как необходимо только лишь после небольшого дополнения...
т.к. FF и IE после выполнения первой строки в случае одной русской буквы возвращало пустую строку.
p.s.: спосибо автору за ценную заметку)
cross :
Не за что, для того и стараюсь
Вот еще один вариант:
1. Со стороны Javascript функция:
- escape(data)
- encodeURI(data)
- encodeURIComponent(data)
2. Со стороны PHP функция:
- iconv(‘UTF-8′, ‘windows-1251′, $_GET['data']);
Это пожалуй и все. Тема раскрыта
cross :
Оказывается не раскрыта
Еще более простой способ нашелся. Со стороный яваскрипта, jquery, prototype никаких действий вообще не производится, а на стороне оборотки скрипта устанавливаем mb_internal_encoding (‘UTF-8′); в самом верху.
Далее с кодировкой проблем больше нет.
XmlHttpRequest: кодировка, ajax, charset, unicode :
[...] яндексил – все без толку. И заметка Cross-а про ajax и кодировку меня не спасла – другой у меня случай. Сделал маленький [...]
GPS для нашей жизни » Scribe.org.ua :
[...] пишет Cross, осень – это пора депрессий. Действительно, осенью и [...]