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を使っているのでこちらも調べた。出力ファイルのエンコードを指定すればよい。
- 該当ファイルを開く
- Ctrl+X,Return,F
- 次のいずれかのエンコードを指定する
- utf-8-with-signature
- utf-8-with-signature-dos
- utf-8-with-signature-mac
- utf-8-with-signature-unix
- ファイルを保存する
BOMの削除
nkfコマンド
nkfコマンドの–oc=UTF-8を使う。
nkf --overwite --oc=UTF-8 hogehoge.csv
emacsを利用する場合
普段Emacsを使っているのでこちらも調べた。出力ファイルのエンコードを指定すればよい。
- 該当ファイルを開く
- Ctrl+X,Return,F
- 次のいずれかのエンコードを指定する
- utf-8
- utf-8-dos
- utf-8-mac
- utf-8-unix
- ファイルを保存する
参考にしたページ
下記のページを参考にしました。ありがとうございます。