UTF-8のBOMの確認、追加、削除

SQLiteからエクスポートしたUTF-8のCSVファイルをExcelで読み込むと文字化けするのでこれまではShift-JISに変換していたがもしかしたら何らかの方法で読み込めるのではないかと思い、検索するとBOMを付加すればよいことが分かった。なお、確認した環境はmacOS 10.15.3 Catalinaです。

確認方法

ターミナルを開き、fileコマンドを使ってBOMの有無を確認する。対象ファイルをhogehoge.csvとします。

file hogehoge.csv
hogehoge.csv: UTF-8 Unicode text <-- BOMなし
hogehoge.csv: UTF-8 Unicode (with BOM) text <-- BOMあり

BOMの追加

nkfコマンド

nkfコマンドを利用する。nkfコマンドはmacOS標準のコマンドではないので何らかの方法でインストールする。私はbrewでインストールしてある。

追加のオプションは--oc=UTF-8-BOM、対象ファイルを上書きするにはオプション--overwriteを追加する。

ocオプションは出力のエンコードの指定

nkf --overwrite --oc=UTF-8-BOM hogehoge.csv

emacsを利用する場合

普段Emacsを使っているのでこちらも調べた。出力ファイルのエンコードを指定すればよい。

  1. 該当ファイルを開く
  2. Ctrl+X,Return,F
  3. 次のいずれかのエンコードを指定する
    1. utf-8-with-signature
    2. utf-8-with-signature-dos
    3. utf-8-with-signature-mac
    4. utf-8-with-signature-unix
  4. ファイルを保存する

BOMの削除

nkfコマンド

nkfコマンドの–oc=UTF-8を使う。

nkf --overwite --oc=UTF-8 hogehoge.csv

emacsを利用する場合

普段Emacsを使っているのでこちらも調べた。出力ファイルのエンコードを指定すればよい。

  1. 該当ファイルを開く
  2. Ctrl+X,Return,F
  3. 次のいずれかのエンコードを指定する
    1. utf-8
    2. utf-8-dos
    3. utf-8-mac
    4. utf-8-unix
  4. ファイルを保存する

参考にしたページ

下記のページを参考にしました。ありがとうございます。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください