BETA

nyagos の type, more で UTF16 をサポート

投稿日:2018-10-20
最終更新:2018-10-24

これな

当初は「とりあえず書いてみた」という感じの issue で、そのうちニーズがない割に面倒なので、やめようかな…と思っていました。

が、最近、会社で過去に書いたプロダクトに問題があって、その修正をしていのたですが、ワークファイルが UTF16 で保存されていて、vim ではかろうじて開けるものの、more も grep も使えないので、たいへんなことに。

ということでですね、実は別途 ANSI/UTF8 の自動判別読み込みフィルター "github.com/zetamatta/go-texts/mbcs".NewAutoDetectReader別パッケージで作ってまして、それを改善する形で取り込んで、UTF16 もサポートするようにしました。 (※バイナリ版はまだリリースしていません)

これの文字コード判別ルールは極めて簡単で

  • \xFF\xFE で始まっていたら、UTF16LE 確定
  • \xFE\xFF で始まっていたら、UTF16BE 確定
  • 0スタートの偶数バイト目に \0 が存在していたら、UTF16BE 確定
  • 奇数バイト名に \0 が存在していたら、UTF16LE 確定
  • 任意の場所に \xEF\xBB\xBF があれば UTF8 確定
  • 1行単位で読み込んで、Go 言語の "utf8".Valid() が false ならば、非UTF8 のマルチバイト文字列と確定
  • 以上でなければ、暫定的に UTF8 とする

実のところ、こんな判別ルールよりももっとたいへんなのが、 "golang.org/x/text/transform" のルールに準拠したテキストフィルターの書き方だったのですが、それはまた別の機会にでも

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@zetamatta'の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!