[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)

こんな感じでどうでしょう? ただ、このメイルの初めの疑問があるので、本当に
これで良いのか、そもそも、今うまくいってるのかよく分かっていません。
--
としちゃん