как работает mb_convert_encoding? - PullRequest
0 голосов
/ 07 июля 2011

У меня были проблемы с экспортом данных UTF-8 в Excel, но теперь все в порядке, потому что я нашел это:

Microsoft Excel меняет диакритические знаки в файлах .csv?

Посмотрите на эту строку:

echo chr(255) . chr(254) . mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');

Когда я убираю chr (255). chr (254) в начале Excel не может нормально отображать данные UTF-8, поэтому браузер не может.

Конечно, это не проблема, я просто хотел бы знать, почему эти chr (255) и chr (254) необходимы.

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Похоже, что Excel требует метка порядка байтов (BOM) .Спецификация всегда находится в начале файла и либо FFFE, либо FEFF.Он описывает, в каком порядке появляются отдельные байты многобайтового символа (скажем, «вперед» или «назад»).Обычно настоятельно рекомендуется опустить его, но, похоже, что Excel использует его для определения кодировки файла.

1 голос
/ 07 июля 2011

Excel и PHP расходятся во мнении о BOM (метке порядка байтов) для обозначения этой кодировки символов.С помощью chr (255) .chr (254) вы вручную принудительно выводите выходные данные в соответствии с требованиями Excel.Смотри http://nl.wikipedia.org/wiki/Endianness

...