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を指定するとリトルエンディアンでエンコードされるようだ。