[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[mhc:00767] Re: coding system of Ruby scripts
At Fri, 23 Jun 2000 13:54:17 +0900,
Yoshinari Nomura <nom@xxxxxxxxxxxxxxxxxxx> wrote:
> > #!ruby -Ke
> > と明示的に文字コードを指定すればよいと教えてもらいました。
>
> なるほど。todo が1個減ったかも。:-)
[snip]
> 入出力では、適切な漢字コードに変換するようにしているので、
> -Ke を入れちゃって大丈夫です。
手元に Windows 上の ruby-gtk を動かす環境を作れていないので、教えてくだ
さい。比較的 Ruby の質問という感じです。
-Ke した場合、Ruby の大域変数 $KCODE が EUC になると思います。一方、
gemcal (および mhc-gtk.rb)の先頭部分に、
case $KCODE
when 'JIS'
$KANJI_CODE = Kconv::JIS
when 'SJIS'
$KANJI_CODE = Kconv::SJIS
else
$KANJI_CODE = Kconv::EUC
end
というコードがあります。つまり、-Ke した場合、$KANJI_CODE は
Kconv::EUC になってしまうと思います。その上で、gemcal(および
mhc-gtk.rb)では
Kconv::kconv(text, $KANJI_CODE, true)
と言ったコードがあります。つまり、Windows 上でも出力文字列を EUC に変換
してしまうような気がするのですが、これは問題ないのでしょうか。
ついでに書いておくと、この $KANJI_CODE という変数は大域変数ではなく局所
変数にして問題ないと思います。(って言うか、乃村君、大域変数使いすぎ:-)
また設定に関しても、
KANJI_CODE = instance_eval('Kconv::' + $KCODE)
こんな感じでどうでしょう? ただ、このメイルの初めの疑問があるので、本当に
これで良いのか、そもそも、今うまくいってるのかよく分かっていません。
--
としちゃん