Использую HttpRequest для асинхронного запроса методом POST к серверу.

Часть джаваскрипта :

Выделить код

Код:

var req =  new XMLHttpRequest();
reg.onreadystatechange = someMethod;
reg.open("POST","/cgi-bin/some_script.php", true);
reg.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
reg.setRequestHeader("Accept-Charset", "windows-1251");
reg.send("x=деякий текст");

Cерверный скрипт :

Выделить код

Код:

<?php
   error_reporting(~E_ALL);
   
   header("Content-type: application/x-www-form-urlencoded");
   header("Accept-Charset: windows-1251");
   
   $sql = $_POST["x"];
   
   $fp = fopen("1","w");
   fwrite($fp,$x);
   fclose($fp);
   
   echo $x;
?>

Результат работы пхп скрипта вывожу алертом.Кирилица отображается корректно. Но в файл она пишется в непонятной мне кодировке. В чем может быть проблема ? Ручками в пхп конвертировать ?

п.с. если использую GET запрос, все отлично работает...

Но в файл она пишется в непонятной мне кодировке.

utf-8

Выделить код

Код:

header("Content-type: application/x-www-form-urlencoded");
   header("Accept-Charset: windows-1251");

ужос... удаляй нафиг.

Удалил, теперь и алерт выводит utf-8.

Удалил, теперь и алерт выводит utf-8.

Может быть, кодировка страницы не совпадает с объявленной, или объявление отсутствует и кодировка страницы не совпадает с дефолтной кодировкой браузера ?

Хм.....на главной странице :

Выделить код

Код:

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

сталкивался с аналогичный проблемой...
по умолчанию данные из запросов всегда приходят в utf-8.
можно как-то сконфигурировать сервер на другую кодировку, но как, выяснить я так и не смог.
использую конструкцию типа

Выделить код

Код:

$string=iconv('utf-8','windows-1251',$string)

для преобразования ;)

Да iconv конечно же помог....Так и оставлю, но если будут идеи откуда растут ноги ущемления windows - 1251 делитесь ;)

Возможно https://bugzilla.mozilla.org/show_bug.cgi?id=382947#c12 что-то подскажет.