中村 のりつぐ です。

文字コード混在のスクリプトを実行したいのですが、
どういう方法があるでしょうか?
(-K? の指定と require する漢字コードが異なったまま
混在させることはできるか?)


やりたいこと:
UNIX 上での GUI スクリプトと Windows 上での
GUI スクリプトで GUI 部分以外(共通部分)は
同じファイルを使いたい。
UNIX 上では EUC を使いたい(なんとなく)


詳細:
例えば、body.rb, ui_1.rb, ui_2.rb があるとして、
body.rb が共通部分 ui_1.rb, ui_2.rb がそれぞれの
GUI 部分です。

body.rb 内部で require "ui_1" もしくは require "ui_2"
というようなことをしています。


以下のような方法を考えてみました。

1) 文字コードが違う(内容の同じ)スクリプトを用意

   body.rb       EUC  (for UNIX)
   body-sjis.rb  SJIS (for Win)
   ui_1.rb       EUC  (for UNIX)
   ui_2.rb       SJIS (for Win)

   Windows 上では body.rb の代わりに body-sjis.rb を
  使い -Ks を付けて実行

2) スクリプト全部を EUC にする
   body.rb  EUC  (for UNIX and Win)
   ui_1.rb  EUC  (for UNIX)
   ui_2.rb  EUC  (for Win)

   Widget への入出力に kconv をかます

1) をやっていたのですが、どうも同じ内容のファイルを
用意するのは間抜けなので止めたいのですが、2) にすると
以下の欠点があります。

o ui_2.rb 内に直接書き込んでいる文字列にも kconv を
  かます必要があり、ちょっとだけ面倒
o Windows 用の ui_2.rb が EUC になってしまい、SJIS
  しか見られない人は見ることができない


本当は以下 3) のような感じが一番簡単そうなのですが、
やり方が分かりません。
o -K? の指定と require する漢字コードが矛盾して
  混在するようなことはできるでしょうか?
o スマートなやり方はあるでしょうか?


3) EUC, SJIS 混在
   body.rb  EUC  (for UNIX and Win)
   ui_1.rb  EUC  (for UNIX)
   ui_2.rb  SJIS (for Win)

       中村 典嗣  E-mail:     nnakamur / mxq.mesh.ne.jp