Кодировка в AJAX

Рейтинг: 1Ответов: 2Опубликовано: 04.03.2011

Подскажите, пожалуйста. Кракозябры замучали! Хотя я и все сделал.

В документе указал

meta http-equiv="content-type" content="text/html; charset=windows-1251"

В файле PHP

header("Content-type: text/html; charset=windows-1251");

И все равно не помогает!

Ответы

▲ 4

Если у вас все тексты в windows-1251.

В начале страницы

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

Перед отправкой запроса на сервер

XmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
XmlHttp.setRequestHeader("Accept-Charset", "windows-1251");
XmlHttp.send(encodeURI(req));

В начале страницы обрабатывающей запрос

header("Content-type: text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

Полученный запрос перекодируйте

while(list($key,$val) = each($_POST))
{
    $_POST[$key]=iconv("UTF-8","windows-1251",$val);
}

echo будет выводить уже в готовом виде windows 1251.

Если Вы используете MySQL, то сразу после соединения с базой, укажите кодировку данных в базе и какую вы хотите получить на выходе. Здесь предполагается, что везде windows 1251

mysql_query("SET character_set_client = cp1251");
mysql_query("SET collation_connection=cp1251_general_ci");
mysql_query("SET character_set_results = cp1251");
▲ 2

Перепишите все под UTF-8 станет намного проще. Да и не забудьте в php убрать BOM.