У меня возникла проблема с отправкой правильной информации о кодировке через заголовок в PHP.Отправка правильного заголовка charset для iso-8859-2
В моем коде я создал CSV-строку, которая кодируется ISO-8859-2. Я вывода этого в браузер, используя следующий код (упрощенный):
$csv = 'iso-8859-2 encoded string, Łukasz Szukała';
header('Content-Type: text/csv; charset=ISO-8859-2');
header('Content-Disposition: attachment; filename=report.csv');
echo $csv;
Полученный файл детектируется как ISO-8859-1, при открытии его с редактором (я использую Notepad ++) и, следовательно, отображается неправильно ,
Преобразование строки в UTF-8 работает как и ожидалось:
$csv = 'iso-8859-2 encoded string, Łukasz Szukała';
$csv = iconv('ISO-8859-2', 'UTF-8', $csv);
header('Content-Type: text/csv; charset=UTF-8');
header('Content-Disposition: attachment; filename=report.csv');
echo $csv;
Я могу даже полностью опустить кодировок часть в этом случае.
Однако мне нужен файл для кодирования ISO-8859-2, и я не понимаю, почему информация заголовка не приведет к обнаружению файла как ISO-8859-2. Я также пробовал разные псевдонимы в соответствии с IANA (http://www.iana.org/assignments/character-sets/character-sets.xhtml), но я не могу заставить его работать в любом браузере.
Значительно ценим любые значения ввода.
Да, я только что понял, что вся информация заголовка теряется, как только файл сохраняется локально. –