0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

途に応じて BOM の有無を決める

Posted at

BOM(Byte Order Mark)がある場合とない場合の影響

UTF-8 における BOM (\ufeff) の有無は、ファイルの読み取りや表示に影響を与える場合があります。


1. BOM あり (\ufeff 付き)

var blob = new Blob(['\ufeff' + printData], { type: "text/csv;charset=utf-8" });

影響

メリット

  • Windows版 Excel で開いたときに 文字化けしにくい(特に CSV ファイル)。
  • 一部のテキストエディタやアプリケーションが UTF-8 であることを正しく認識 できる。

デメリット

  • UNIX/Linux の一部のツール (cat, grep, awk など) では BOM をデータの一部と誤認識 することがある。
  • Python や JavaScript の read() 関数で最初の文字として \ufeff が入る場合がある。
  • Web サーバーや API で処理する際、BOM の存在が影響を与える場合がある。

2. BOM なし (\ufeff なし)

var blob = new Blob([printData], { type: "text/csv;charset=utf-8" });

影響

メリット

  • Linux 環境の grepawk などで スクリプトが正しく動作する
  • 一部のプログラム(特に JSON, XML, CSV の解析)で 余計な BOM の影響を受けない
  • Web サーバーでの処理に影響を与えない。

デメリット

  • Windows版 Excel で CSV を開いたときに文字化けする可能性がある(特に日本語)。
    • Excel では UTF-8 を正しく判別できないことがあり、Shift_JIS で解釈されることがある。

BOM の有無の選び方

使用用途 BOM あり BOM なし
Windows Excel で開く CSV 推奨 ❌ 文字化けする可能性あり
Linux でのテキスト処理 (cat, grep, awk など) ❌ 影響を受ける可能性あり 推奨
Web サーバーで API 連携や JSON/XML を扱う ❌ 影響を受ける可能性あり 推奨
UTF-8 のエディタで開く(VSCode, Sublime, Notepad++ など) どちらでもOK どちらでもOK

結論

  • Windows の Excel で CSV を開く場合 → BOM あり
  • Linux や Web サーバーで処理する場合 → BOM なし
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?