カテゴリー
コンピューター

【Groovy 】文字コードを判別するコード、文字コードを意識せずにファイルを読み込むコードのサンプルを作る中で学んだことのメモ

サンプル

Groovy 全体について学んだこと

Groovy 等、言語の使い方等について学んだこと

外部ライブラリを使用する方法

  • @Grapes、@Grab を使用すると外部ライブラリのダウンロード、パス設定などを意識する必要がなくなる。
  • Maven Repository: Search/Browse/Explore から探すと良い。
  • ライブラリページ > Version で詳細ページへ行き、そこの Grape タブの内容をコピペすればそれで使用できる。

ICU4J

CharsetDetector インスタンスを生成して setText 後、detect() すれば CharsetMatch インスタンスを得られる。

  • CharsetMatch インスタンスのメソッドで判別した文字コードを得られたり、ファイルの内容を扱えるようになったりする。
    • getName(): 文字コード名を得られる。
    • getConfidence(): 文字コードの精度が得られる。0 から 100 の数字で高いほうが高精度、とのことなので、単純に得られた数字パーセントの確率で getName() の文字コード、と思えばよさそう。
    • getReader(): ファイルの内容を得るための java.io.Reader インスタンスを得ることができる。CharsetDetector そして CharsetMatch を使えば文字コードを意識すること無くファイルの内容を取得できるのは嬉しい。

Groovy での Reader の使い方。

  • ファイルの中身を扱うために、File クラスを使って よく使いそうなGroovy使い方メモ – Qiita のように簡単におこなえる。
  • しかし、icu4j を使う場合は? Reader インスタンスの使い方を学ぶ必要がある。
  • と言っても Groovy で Reader クラスを使うのは難しくない。
    Reader (Groovy JDK enhancements)

    • eachLine でクロージャを使用して、println it などとすれば各行を簡単に扱える。
    • readLines() で 1 行を要素とする String のリストを得られる。

おわりに

Groovy で文字コードを意識すること無くファイルを読み込むにはどうすれば良いだろうと調べはじめて、わかったことをまとめました。

おもったよりも、簡単に扱えて、嬉しいですね!

以上です。

コメントを残す