AJAX и русские буквы — проблема с кодировкой

При использовании AJAX, особенно совместно с MySQL, могут возникнуть проблемы с передачей русских букв между скриптами независимо от метода (GET или POST). Решением является:

  1. явное указание кодировки
    На клиентской части это
    1<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

    , на серверной (php) —

    1header("Content-type: text/html; charset=windows-1251");
  2. ручная перекодировка
    при отправке из javascript применять функцию encodeURIComponent, которая кодирует в Unicode
    1req.send('param='+encodeURIComponent('привет мир'));

    в серверной части приводим к нужной кодировке с помощью iconv

    1iconv("UTF-8""WINDOWS-1251"$param);

Также часто проблемы с кодировкой могут возникать из-за неверных настроек MySQL. В этом случае необходимо внести коррективы в файл my.cnf/my.ini (в зависимости от версии). В разделе [mysqld] должны быть строки:

1default-character-set = cp1251
2init-connect="SET NAMES cp1251"
3skip-character-set-client-handshake=1

Последний параметр заставляет сервер игнорировать кодироку, посылаемую клиентом, и использовать указанную в настройках сервера.

Оцените статью
Добавить комментарий