自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
October 31, 2007 [おもひで]
■ [Ruby] JRubyでシステムの文字コードを取得する
この前は無事JRubyでシステム(カレントユーザ)のロケールを取得できたので今日はシステム(カレントユーザ)のCharsetを取得できないか、とJava APIを探してみたら、java.nio.charset.Charsetなんて便利なクラスが。オレの時代(= Java 1.0.2 to 1.2.0)には無かったのに・・・世の中便利になったもんだ(<浦島太郎すぎ)。
$ export LANG=ja_JP.UTF-8 $ jirb irb(main):001:0> require 'java' => true irb(main):002:0> java.nio.charset.Charset.defaultCharset.name => "UTF-8" $ export LANG=ja_JP.eucJP $ jirb irb(main):001:0> require 'java' => true irb(main):002:0> java.nio.charset.Charset.defaultCharset.name => "x-euc-jp-linux"
この、UTF-8, "x-euc-jp-linux"というのは先日のPseudo Iconvでも使うことができた。
puts Iconv.conv("x-euc-jp-linux", "UTF-8", "あいう")
これで大体Ruby-GetText JRuby対応の下地は揃ったかなぁ。案外簡単そうだ。
■ にしても、なんだこの爽快感。JavaのAPIをirbで呼び出すのがとてつもなく気持ちがよい。Java開発がメインです、みたいな人はぜひ試してみてほしい。正直ここまで気持ちいいとは思ってなかった。
やっぱり、普段のJavaの面倒くささ(RAD起動したり、main()を始めとしていくつかの決まりごとを書いたり(RADがやってくれるけどさ)、コンパイルしたりするやつね)が一切ないのが良いんだろうなぁ。それでいて何の苦労もなくJavaの膨大なAPIが呼び出せちゃうんだからね。
E:\jruby-1.0\bin>jirb.bat irb(main):001:0> require 'java' => true irb(main):002:0> java.nio.charset.Charset.defaultCharset.name => "windows-31j"
うん。OKだね。Matz Ruby版ではwindows-31jではなくCP932が返ってくるんだけど、この違いは問題ない。(CP932という文字列をJRubyに渡しても解釈してくれないっぽい。ま、でも、Ruby-GetTextで使用する範囲なら問題ないでしょう)。
[ツッコミを入れる]
