LinuxでUTF-8のBOMを追加、削除するコマンド

2021年6月3日木曜日

Linux

t f B! P L

CSVなどのファイルを扱う時に、先頭の行だけエラーでうまく読み取れない時、UTF-8のBOMを付加したり、逆にツールによってはBOMを削除しなければならない時がある。

この記事では、Linuxコマンドで、テキストファイルにUTF-8のBOMを追加・削除する方法を紹介します。

スポンサーリンク

ファイルの文字コード・BOM付きを確認する

fileコマンドで、ファイルの文字コードやBOM有無の確認ができる。

$ file filename.csv

filename.csv: ASCII text                      #BOMなし
filename.csv: UTF-8 Unicode (with BOM) text   #BOMあり

BOMの追加・削除

LinuxでのUTF-8 BOMの追加・削除はnkfコマンドで行うのが簡単です。

nkfがインストールされていない場合はapt-get install nkfなどのコマンドでインストールしましょう。

BOMの追加

ファイルにBOMを追加する場合は、次のコマンドを使用します。

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

BOMの削除

ファイルからBOMを削除する場合は、次のコマンドを使用します

nkf --overwrite --oc=UTF-8 filename.csv

スポンサーリンク

そもそもUTF-8のBOMって何?

BOMとは、バイトオーダーマーク(Byte Order Mark)の略で、ファイルの文字コードが「UTF-8」であることを示すために、ファイルの先頭3バイトに<0xEF 0xBB 0xBF>というデータを書き込みます。
要は、UTF-8で保存されているファイルだと明示するための符号です。

BOMの有無は任意で、BOM無しで書かれたファイルは「UTF-8N」と表記することもあります。

ツールによって、BOMの必要・不要が異なり、例えばExcelなどではUTF-8のファイルはBOM付きである必要があり、HTMLやCSVなどのファイルでは一般的にBOMは付けません。

スポンサーリンク

QooQ