FeatureList の options に :charset を指定できるようにしました。
geotools.rb の Geo::FeatureList で、DBF ファイルの文字コードを指定できるようにしました。GeoTools 2.4 以降を使うよう設定した geotools.rb で動作します。
こういうふうに使います
require 'geotools' Geo::FeatureList.foreach('with_umlaot.shp', {:charset => 'UTF-8'}) do |f| print "#{f[:name]}\n" end
charset の指定の仕方
options[:charset] に与えた文字列は、javax.nio.charset.Charset.forName にそのまま与えるので、IANA の正準名などを与えてください。
Charset.forName の例外をハンドルする部分は、ちゃんとは書いていないので、あとで書くかもしれません。
経緯
GeoTools は、歴史的に Shapefile の DBF ファイルを ISO-88859-1 と決めうちして読み込んでいました。geotools.rb の Geo::Reader では、以前から知られている場当たり的な手段で無理矢理日本語の文字コードを読むコードを実装していました。
GeoTools は、2.4 から ShapefileDataStore#setStringCharset が実装され、DBF の文字コードが指定できるようになりました。今回、必要が生じたのを機会に、Geo::FeatureList に文字コード指定オプションを追加しました。
動作確認状況
データの書き出しについては、特に実験をしていません。読み込みについては、{:charset => 'UTF-8'} を指定したときに、問題なく動作する場合があることを確認しています。
geotools.rb について
geotools.rb については、「geotools.rb」のはてなダイアリーキーワードに記載しているので、そちらをご覧ください。