2007-05-11 (Fri) [長年日記]

Iconv in JRuby

JRubyの構造が分かってきたので先よりちょっと大きめのIssueということでIconvクラスの実装に取り組んでみた。現状のJRubyのIconvはクラスメソッドしかサポートしていない中途半端なもので、contribute大歓迎みたいだし。

テストケースを付けてパッチを送ったところ`Super work'との過分なお言葉をいただき取り込んでもらえた模様。光栄なり。

このIconvをjava.nio.charset APIを使って実装していて思ったが、Unicodeや国際化サポートは圧倒的にJavaのほうが充実しているので、Javaにある機能をRubyに提供するのが容易なJRubyは、今後のRubyの国際化対応を実験してみる環境としてとても優秀じゃないかな。

追記: 2007-05-14

解決したIssueは以下。

  • [JRUBY-309]: Implement IConv Exception classes (e.g. Iconv::IllegalSequence and friends)
  • [JRUBY-310]: Implement Iconv instance methods iconv, close
  • [JRUBY-788]: Implement IConv#open

現状ではjava.nio.charset APIとIconvの仕様の違いに起因する挙動が異なる部分がある。エンコーディングにUTF-16を指定するとjava.nio.charsetのデフォルトによってBOM付きビックエンディアンの結果が出力される。IconvではUTF-16を指定するとリトルエンディアンでエンコードされるようだ。

Tags: JRuby