GNKF: NKF ぽいなにか の v0.3.0 をリリースした

no extension

Go 言語における文字列処理の習作 gnkf の v0.3.0 をリリースした。

このバージョンで UTF-8 テキスト中の BOM (Byte Order Mark; U+FEFF) を除去する機能を追加した。

$ gnkf remove-bom -h
Remove BOM character in UTF-8 string.

Usage:
  gnkf remove-bom [flags]

Aliases:
  remove-bom, rbom, rb

Flags:
  -f, --file string     path of input text file
  -h, --help            help for remove-bom
  -o, --output string   path of output file

Global Flags:
      --debug   for debug

たとえば

$ echo Hello | gnkf dump
0xef, 0xbb, 0xbf, 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x0a

こんな感じに BOM が付いてるテキストに対し

$ echo Hello | gnkf rb | gnkf dump
0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x0a

てな感じで BOM を除去できる。

東京都の COVID-2019 オープンデータとか) CSV ファイル等に BOM が付いてるものがあって,前々から「誰がこんな要らんことしてんねん」と思っていたが,仕事で再び MS Office ドキュメントを弄るようになって気がついた。 おまえか!

ことあるごとに言っているが, UTF-8 はオクテット単位のストリームなのでエンディアンを指示する BOM は不要である。 てか,付けるべきではない。 大きさを持たないかつ意味のない文字コードを付加するのはリスクである。

昔は文字列の先頭に BOM があるかどうかで文字エンコーディングを判定する手抜き実装もあったが,流石にそんな頭の悪いシステムはなくなっただろう。

なお enc, norm, width, kana の各サブコマンドでも --remove-bom オプション(短縮名 -b)を付けることで,前処理として BOM の除去を行うようにした。

全文をいったんメモリに読み込んで変換処理を行っているので,巨大テキストを処理する際はご注意を。 習作(study)として作ったツールを仕事で使う羽目になるとは orz

ホンマ UTF-8 の BOM は滅びればいいのに。

ブックマーク

参考図書

photo
プログラミング言語Go
アラン・ドノバン (著), ブライアン・カーニハン (著), 柴田芳樹 (著)
丸善出版 2016-06-20 (Release 2021-07-13)
Kindle版
B099928SJD (ASIN)
評価     

Kindle 版出た! 一部内容が古びてしまったが,この本は Go 言語の教科書と言ってもいいだろう。感想はこちら

reviewed by Spiegel on 2021-05-22 (powered by PA-APIv5)