From: Masao Mutoh Date: 2003-06-22T20:54:05+09:00 Subject: [ruby-dev:20405] Re: locale and Marshal むとうです。 On Fri, 20 Jun 2003 01:35:20 +0900 Masao Mutoh wrote: > むとうです。 > > ruby-gnome2-en MLの方で報告を受けたのですが、 > こちらにまわさせていただきます。 > > Ruby/GTK2はライブラリ読込時にsetlocaleを呼んでる > のですが、数字の'.'が','になるロケールで、 > 以下のような現象が発生します。 > > $export LANG=es_ES (pl_PLとかでも良いです) > irb(main):001:0> require 'gtk2' > => true > irb(main):002:0> a = 12.34 > => 12,34 > irb(main):003:0> z = Marshal.dump(a) > => "\004\010f\r12,34\000G\256" > irb(main):004:0> w = Marshal.load(z) > => 12,0 > > #12,34 が 12,0になってしまっている。 > > おそらくは > [ruby-dev:18656] Re: 1.6.8 preview > と同様の問題のような気がしますが、 > 12,34が12,34のままになって欲しいのかと。 この件ですが、pygtkにならい、 Ruby-GNOME2の方で、強制的に setlocale(LC_NUMERIC, "C"); を呼ぶようにしました。 以下のようなコメントがあるので、Pythonでは LC_NUMERICはCを使うようにしてるようです。 /* set the LC_NUMERIC locale back to "C", as Python requires * that it be set that way. */ setlocale(LC_NUMERIC, "C"); -- .:% Masao Mutoh