При использовании AJAX, особенно совместно с MySQL, могут возникнуть проблемы с передачей русских букв между скриптами независимо от метода (GET или POST). Решением является:
- явное указание кодировки
На клиентской части это1
<
meta
http-equiv
=
"Content-Type"
content
=
"text/html; charset=windows-1251"
/>
, на серверной (php) —
1
header(
"Content-type: text/html; charset=windows-1251"
);
- ручная перекодировка
при отправке из javascript применять функцию encodeURIComponent, которая кодирует в Unicode1
req.send(
'param='
+encodeURIComponent(
'привет мир'
));
в серверной части приводим к нужной кодировке с помощью iconv
1
iconv(
"UTF-8"
,
"WINDOWS-1251"
,
$param
);
Также часто проблемы с кодировкой могут возникать из-за неверных настроек MySQL. В этом случае необходимо внести коррективы в файл my.cnf/my.ini (в зависимости от версии). В разделе [mysqld] должны быть строки:
1
default-character-set = cp1251
2
init-connect="SET NAMES cp1251"
3
skip-character-set-client-handshake=1
Последний параметр заставляет сервер игнорировать кодироку, посылаемую клиентом, и использовать указанную в настройках сервера.