From: Hidetoshi NAGAI Date: 2008-01-30T13:31:12+09:00 Subject: [ruby-dev:33519] Re: 現在の script encoding の値を得る方法は? 永井@知能.九工大です. From: "NARUSE, Yui" Subject: [ruby-dev:33516] Re: 現在の script encoding の値を得る方法は? Date: Wed, 30 Jan 2008 11:23:38 +0900 Message-ID: <479FDFB2.30106@airemix.com> > えーっと、KCODE_CHECKER ="\x80" とか書いたファイルを置いて、それを読み込 > むとか。-K が指定されていると デフォルトの script encoding が与えられる > ので、KCODE_CHECKER.encoding が ASCII-8BIT 以外になります。存在はするけ > どー、という感じですね(ぉぃ それはあまりといえばあんまりな.(^_^; > '%s -> %s' % [enc.to_s, name] となっているところに意図があって、実際は > Ruby 側の encoding から Tk 側の encoding にちゃんとなっています。 > > r2t_table = {} > tk_encoding.each do |name| > enc = Encoding.find(name) > r2t_table[enc] = name > end > > def rubyenc2tkenc(name) > r2t_table[Encoding.find(name)] > end > > これで、alias も考慮して Ruby の encoding name から tk の encoding name > が取れます。 あぁ,そうですね. ついつい文字列での名前から直接引くことを考えてしまってました. Encoding.find できちんと Encoding object にして引けばいいだけでした. お恥ずかしい. それはそれとして,Tcl/Tk8.4 on Linux での encoding names で 得られるものに対して実行すると,以下のもので 対応するものが見つからずに例外が生じます. -------------------- X11ControlChars cp153 dingbats ebcdic gb12345 gb2312-raw gb2312 identity iso2022 iso2022-kr jis0201 jis0208 jis0212 ksc5601 macDingbats shiftjis symbol ucs-2be unicode -------------------- ebcdic のように当面は非対応となっているものや, X11ControlChars や symbol のように ASCII-8BIT にするしかなさそうなものもありますが, shiftjis のように対応しておいた方がよさそうなものもあります. # あと,メソッド名とかで *utf8 とかのようにハイフンなしなのが多いので, # encoding の指定でも utf8 とハイフンを忘れて書いてしまうことも.(^_^; > > それとも,replica に対する私の捉え方が不適切で, > > もし関係がわかったとしてもそれを選択してはならないのでしょうか? > > えぇ、関係があったとしてもそれを選択してはなりません。replica 関係では基 > 本的に CES についてしか見ていませんから、同じ CES でも全く違う文字集合が > 入っている場合にはうまくいかなくなります。 わかりました.ありがとうございます. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp