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コマンドで確認してみてください。

東京生まれ福岡育ちの文系プログラマー。
テクノロジーの恩恵を感じながら日々精進しています。
広く浅くをモットーに、最近ではプログラミングだけでなく、仮想サーバーからセキュリティ、監視システムなども勉強中です。

管理者をフォローする

コメント

  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を変換する方法をご紹介します! […]

タイトルとURLをコピーしました