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']);
?>

Автор