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は付けません。
0 件のコメント:
コメントを投稿