UTF-8のBOM付きとBOMなしを変換する方法(Linux)

linux-utf-8-bom

最近ではあまり意識しなくなりましたが、UTFー8にはBOMbyte 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コマンドで確認してみてください。




Amazonベストセラー

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA