Фев
27
2008

Кодировка windows-1251 в ajax

Как же все таки быть с кодировкой windows-1251? Ведь эта проблема не только всплывает при использовании XMLHttpRequest.

Задавшись этим вопросом, я полез в интернет, но кроме «клонов» хабры ничего не нашел, везде советуется переходить на UTF-8. А если нет такой возможности, а реализовать нужно, что же делать?

Я нашел выход в следующем:

При передачи данных (не зависимо каким способом get или post) предварительно кодирую с помощью функции escape() передаваемую строку, а в PHP используя библиотеку раскодирую. Использование библиотеки связанно с недоступностью функции iconv, но скрипт предварительно проверяет наличие поддержки этой функции.
Итак на странице вставляем код:

$.post('script.php', {string:escape("Строка"});

передаем, методом post, php скрипту закодированную строку.
В php скрипте обрабатываем пришедшую переменную с помощью библиотеки.

<?

 require_once (libDir."/ext/class.Decoder.php");
 $decode = new Decoder();
 $string = $decode->_ucs2EntitiesDecode($_POST['string']);

?>