私はphpを介してcsvファイルを生成し、ブラウザからダウンロードします。使用されるターゲット システムが mac、unix、windows などになる可能性があることを考慮して、最初にバイト オーダー マーク バイトを挿入する必要がありますか?
2 に答える
いいえ、必要ありません。
バイト オーダー マークは、一部の Unicode エンコーディング (UTF-8、UTF-16、および UTF-32) で使用され、エンコーディングが実際に Unicode であるかどうかを判断します。
UTF-16 では、UTF-16 と UCS-2 (UTF-16 のサブセット) を区別するために使用されます。
UTF-8 および UTF-32 ではオプションですが、有効です。ただし、UTF-8 では、互換性の問題が発生する可能性があります。よく表現されたウィキペディアのエントリを引用するには:
既存のプログラムとの互換性が重要でない場合は、BOM を使用して、ファイルが UTF-8 であるか従来のエンコーディングであるかを識別することができますが、実際にはファイルを変更せずに BOM が追加または削除される多くのインスタンスのため、これには依然として問題があります。エンコーディング、またはさまざまなエンコーディングが連結されています。テキストが有効かどうかのチェック UTF-8 は、BOM を使用するよりも信頼性が高くなります。
これらの理由から、UTF-8 で BOM を使用することに反対します。
元の質問に関しては、実際には、ファイルが書き込まれたときにエンコードされる方法次第です。utf-8 でエンコードされる場合は、BOM を追加します。ファイル内に ASCII 文字のみがある場合、シーケンスがないため、BOM が存在しない可能性があります。ただし、ファイル内に utf-8 シーケンスが含まれている場合は、ファイル全体を調べて有効なシーケンスを確認することで、BOM を検出しやすくなります。また、単一のシーケンスを検出したとしても、それは 0x7F より上の単一の文字である可能性があります。