utf 8 — php 5.6.7 fwrite против fputs кодировка utf-8

У меня есть данные XML, которые отправляются в виде строки в URL.

Например, url? Data = string

Это отправляется на другой сервер, который я не могу контролировать, и они используют fputs, поэтому я не могу просто перейти на fwrite. Я пытаюсь выяснить, как заставить fputs работать так, чтобы я мог дать им исправление. Моя тестовая среда использует php 5.6.7.

В строке находится символ á (alt + 0225).

Используя этот код, персонаж все еще остается при просмотре файла в блокноте ++.

 $datafile = fopen("datafile.txt", "a");
foreach (getallheaders() as $name => $value){
$y = "$name: $value\n";
fwrite($datafile,$y);
}
fclose($datafile);

Использование этого кода превращается во что-то другое при просмотре с использованием блокнота ++.

 $datafile_fputs = fopen("datafile_fputs.txt", "a");
foreach (getallheaders() as $name => $value) {
$y = "$name: $value\n";
fputs($datafilefputs,$y);
}
fclose($datafile_fputs);

Я попытался сделать это, как показано здесь в stackoverflow, и символ по-прежнему отображается неправильно.

 $file = "datafile_fputs";
$datafile_fputs = fopen($file, "a");
foreach (getallheaders() as $name => $value) {
$y = "$name: $value\n";
$file = "\xEF\xBB\xBF".$file;
fputs($datafile_fputs,$y);
}
fclose($datafile_fputs);

Кто-нибудь знает, почему fputs действует по-другому и как это исправить?

0

Решение

Это единственное решение, которое я мог придумать. При запуске приведенного ниже кода в файл с использованием getallheaders сработали fputs из $ _REQUEST [‘data’]. Я предполагаю, что заголовок файла установлен в спецификации utf-8 и, следовательно, все, что вводится после того, как оно правильно закодировано.

 $file = "datafile_fputs";
$datafile_fputs = fopen($file, "a");
foreach (getallheaders() as $name => $value) {
$y = "\xEF\xBB\xBF";
$y .= "$name: $value\n";
fputs($datafile_fputs,$y);
}
fputs($datafile_fputs,$_REQUEST['data']);
fclose($datafile_fputs);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]