web-dev-qa-db-ja.com

UTF-8 CSVファイルにBOM(バイトオーダーマーク)を含める必要がありますか?

弊社の基幹業務ソフトウェアを使用すると、特定のデータを [〜#〜] csv [〜#〜] として保存できます。実際にはさまざまな形式(すべて「CSV」と呼ばれています)が使用されているため、「デフォルトの形式」がどのように見えるかを決定するために協力しています。

  • 行/フィールド区切り文字とエスケープに関して、使用できる標準があります RFC 418

  • テキストエンコーディングに関しては、 TF-8 が「デフォルトのテキストファイル形式」として過去10年間に登場したようですので、それを使用します。

未解決の問題は、最初に [〜#〜] bom [〜#〜] を追加するかどうかです。一般にBOMの使用について複数の意見と賛否両論を読みましたが、CSVファイルでのBOMの使用に関して「公式」の推奨事項または少なくとも何らかのコミュニティの合意はありますか?

38
Heinzi

TF-8以外 ですが、コメントのさまざまな警告を参照してください。

UTF-16/32とは異なり、UTF-8にはバイトオーダーがありません。 nicode標準 では推奨されません。また、BOMが「実際に」使用されているUTF-8を確認することは非常にまれです。そのため、正当な理由がない限り(たとえば、コメントされているように、BOMを期待するソフ​​トウェアを使用することになります)、BOMを使用しないアプローチをお勧めします。

Wikipedia は、主にBOMを強制および期待するMicrosoftソフトウェアについて言及していますが、それらを使用しているのでない限り、使用しないでください。

55
Kayaman

確かにUTF-8が一般に受け入れられるようになりましたが、AFAIKの広範な規則はまだありません。

BOMはひどいアーティファクトです。

見えません(ゼロ幅スペース)。

一部のソフトウェアでは、最初の列名が文字だけではなく、その前の奇妙なBOMで壊れる場合があります。

ヘッダー行は、最初の値を破壊する値行に対してコピーされる可能性があります。

一部のWindowsソフトウェアでは、そのローカルWindowsマシンで使用されているANSIエンコーディングの1つとUTF-8を区別するためにのみ必要です。 メモ帳、Excel

悲しいことに、BOMをサポートする必要があります。多分オプションです。

ファイルの命名規則を使用します(...- utf8.txt、...- utf8bom.txt)。


多くの場合、エクスポートの代替として[〜#〜] html [〜#〜]を使用できます。これにより、ファイルのエンコーディングを設定できます。追加の機能は、行とセルの背景/前景の色分けです。これにより、エクスポートの品質が向上します。

8
Joop Eggen