銀河鉄道

BOM付きUTF-8で文字化けを防ぐ|テキストファイル

サムネイル
BOM(Byte Order Mark)UTF-8
テキストファイルは
BOM付きUTF-8

BOM付き?

日本語の文字化けを防ぐもの

BOMとは

BOM (Byte Order Mark)

テキストファイルの先頭に置かれる「このファイルはどんな文字コードで書かれてるか」を示す目印(バイト列)のこと

  • ファイルを開いたときに「文字コードがUTF-8だよ」と伝えるもの
  • 特にExcelや古いエディタはBOMがないと文字化けしやすいので、日本語CSVではBOM付きがよく使われる

どうやってBOM付きにするの?

ファイルの先頭に、バイト列を置く

BOM付きUTF-8|EF BB BF

EF BB BF というのが BOM

16進数で EF BB BF

先頭3バイトにこの並びがあると、アプリは「このファイルはUTF-8だ」と認識する

他の例

  • UTF-16 LE(リトルエンディアン)のBOM → FF FE
  • UTF-16 BE(ビッグエンディアン)のBOM → FE FF
  • UTF-32 → もっと長いBOMがある

BOMが役立つケース

  • Windowsメモ帳でUTF-8ファイルを開く場合
  • ExcelでCSVを開いた際、日本語が文字化けしやすい場合
  • 外部プログラムが文字コード判定を必要とする場合

ただし注意点!

UTF-8は本来BOM不要(規格上は推奨されない場合もある)

でも Excelなどの一部アプリはBOM付きじゃないと文字化けする

そのため「CSVはBOM付きUTF-8で出力」が定番

たとえばPythonのスクリプトファイルも
BOM付きで保存しないと実行エラーになることがある

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。

記事一覧