From: Hidetoshi NAGAI Date: 2003-11-20T17:44:10+09:00 Subject: Re: Encoding in ruby/tk internals Hi, From: Nikolay Ponomarenko Subject: Re: Encoding in ruby/tk internals Date: Thu, 20 Nov 2003 15:58:37 +0900 Message-ID: <80918300.20031120090222@pstu.edu> > HN> After calling Tk.encoding_system = 'cp1251', > HN> do you get the same result? > > Yes. > something like > > Tk.encoding_system = 'cp1251' # or Tk.encoding = 'cp1251' > $btn = TkButton.new($root) { > text "and here text in cp1251" > } > works right > > Problem is only with "%" values :( Well, could you try the following patch? Index: tkentry.rb =================================================================== RCS file: /src/ruby/ext/tk/lib/tkentry.rb,v retrieving revision 1.19 diff -u -r1.19 tkentry.rb --- tkentry.rb 3 Aug 2003 22:07:46 -0000 1.19 +++ tkentry.rb 20 Nov 2003 08:41:54 -0000 @@ -27,9 +27,10 @@ class ValidateArgs VARG_KEY = 'disvPSVW' - VARG_TYPE = 'nxsssssw' + VARG_TYPE = 'nxeseesw' def self.scan_args(arg_str, arg_val) + enc = Tk.encoding arg_cnv = [] arg_str.strip.split(/\s+/).each_with_index{|kwd,idx| if kwd =~ /^%(.)$/ @@ -39,6 +40,12 @@ arg_cnv << TkComm::number(arg_val[idx]) when ?s arg_cnv << TkComm::string(arg_val[idx]) + when ?e + if enc + arg_cnv << Tk.encoding_convertto(TkComm::string(arg_val[idx]), enc) + else + arg_cnv << TkComm::string(arg_val[idx]) + end when ?w arg_cnv << TkComm::window(arg_val[idx]) when ?x -- Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)