У меня есть данные 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 действует по-другому и как это исправить?
Это единственное решение, которое я мог придумать. При запуске приведенного ниже кода в файл с использованием 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);
Других решений пока нет …