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