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 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
Alan A.A. Donovan (著), Brian W. Kernighan (著), 柴田 芳樹 (翻訳)
丸善出版 2016-06-20
単行本(ソフトカバー)
4621300253 (ASIN), 9784621300251 (EAN), 4621300253 (ISBN), 9784621300251 (ISBN)
評価     

著者のひとりは(あの「バイブル」とも呼ばれる)通称 “K&R” の K のほうである。この本は Go 言語の教科書と言ってもいいだろう。

reviewed by Spiegel on 2016-07-13 (powered by PA-APIv5)