UTF-8 BOMの変換

BOMの確認

xxdコマンド

BOMなし

 $ xxd utf8-no-bom.txt
 00000000: 3132 330d 0a                             123..

"123"とだけ書かれたファイルとする。

BOMあり

 $ xxd utf8-bom.txt
 00000000: efbb bf31 3233 0d0a                      ...123.

先頭が"efbbbf"で、続いて"123"と書かれたファイル。

fileコマンド

BOMなし

 $ file utf8-no-bom.txt
 utf8-no-bom.txt: ASCII text, with CRLF line terminators

BOMあり

 $ file utf8-bom.txt
 utf8-bom.txt: UTF-8 Unicode (with BOM) text, with CRLF line terminators

BOM(バイトオーダーマーク)の実際

エンコーディングバイト列の実際
UTF-80xEF 0xBB 0xBF
UTF-16 BE0xFE 0xFF
UTF-16 LE0xFF 0xFE

https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%82%AA%E3%83%BC%E3%83%80%E3%83%BC%E3%83%9E%E3%83%BC%E3%82%AF

BOMの削除

nkfコマンド

 cat utf8-bom.txt | nkf --oc=utf-8
 cat utf8-bom.txt | nkf -W -w80

http://www.atmarkit.co.jp/ait/articles/1609/29/news016.html

sedコマンド

 cat utf8-bom.txt | sed -e '1s/^\xef\xbb\xbf//'

awkコマンド

 cat utf8-bom.txt | awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}'

tailコマンド

 cat utf8-bom.txt | tail --bytes=+4

複数のファイルからまとめて削除

 find . -type f -exec sed -i -e '1s/^\xEF\xBB\xBF//' {} \;

http://muzso.hu/2011/11/08/using-awk-sed-to-detect-remove-the-byte-order-mark-bom

BOMの追加

nkfコマンド

 cat utf8-no-bom.txt | nkf --oc=utf-8-bom

vim

 vim utf8-no-bom.txt  # 1. vimで開く
 :set bomb            # 2. :set bomb でBOMを設定する
 :w utf8-bom.txt      # 3. :w で保存する

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2017-04-09 (日) 09:33:55