0

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)が不可欠なのかを知りたいと思います。

4

2 に答える 2

1

Excel と PHP では、この文字エンコーディングを示す BOM (バイト オーダー マーク) の考え方が異なります。chr(255).chr(254) を使用すると、手動で強制的に出力を Excel が望むものにすることができます。http://nl.wikipedia.org/wiki/Endiannessを参照

于 2011-07-07T12:16:19.630 に答える
1

Excel にはByte Order Mark (BOM)が必要なようです。BOM は常にファイルの先頭にあり、FFFEまたはFEFF. マルチバイト文字の個別のバイトがどの順序で表示されるかを記述します (「前方」または「後方」としましょう)。通常は省略することを強くお勧めしますが、Excel はファイル エンコーディングを決定するために使用しているようです。

于 2011-07-07T12:16:43.333 に答える