最近ではあまり意識しなくなりましたが、UTFー8にはBOM(byte order mark)という厄介な存在があります。
今回は、LinuxでこのBOMを付けたり外したりする方法をご紹介します。
目次
BOMとは?
BOMを簡単に説明すると、そのファイルがUnicodeで符号化されているかどうかを、先頭の見えない3バイトで表現するものです。
バイトオーダーマーク (英: byte order mark) あるいはバイト順マーク(バイトじゅんマーク)は通称BOM(ボム)といわれる、Unicodeの符号化形式で符号化したテキストの先頭につける数バイトのデータのことである。このデータを元にUnicodeで符号化されていることおよび符号化の種類の判別に使用する。
バイトオーダーマーク – Wikipedia
要は、この先頭の見えない3バイトが邪魔して、多くのシステムで問題になっています。
LinuxでBOMを変換する
まず、以下のコマンドで対象のファイルがBOM付きか、BOMなしなのか確認できます。
1 |
file sample.txt |
実行した結果はこのように表示されます。
1 |
sample.txt : UTF-8 Unicode (with BOM) text. |
この「(with BOM)」があったらBOM付きということですね。
逆になかったらBOMなしという事になります。
それでは変換していきましょう。
ここでは、vi
のオプション-c
を利用して、ファイルを開かずにBOMを変換していきます。
BOMなし → BOM付き
BOM付きにするには、vi
で「bomb」をセットして保存しているだけです。
1 |
vi -c 'set bomb' -c 'wq!' sample.txt |
これでBOM付きになりました!
BOM付き → BOM なし
反対にBOMなしにするには「nobomb」をセットします。
1 |
vi -c 'set nobomb' -c 'wq!' sample.txt |
これでBOMなしになりました!あとは先程のfile
コマンドで確認してみてください。
コメント
コメント一覧 (1件)
[…] 前回、Linuxで文字コードがUTF-8のファイルに対して、BOM付き⇔BOMなしを変換する方法をご紹介しました。 UTF-8のBOM付きとBOMなしを変換する方法(Linux)https://minory.org/linux-utf-8-bom.html最近ではあまり意識しなくなりましたが、UTFー8にはBOM(byte order mark)という厄介な存在があります。今回は、LinuxでこのBOMを付けたり外したりする方法をご紹介します。BOMとは?BOMを簡単に説明すると、そのファイルがUnicodeで符号化されているかどうかを、先…Minory 今回は、改行コードのLF⇔CRLFを変換する方法をご紹介します! […]