Hello ruby-talk peoples,
It seems that something is wrong in ruby/tk libraries:
I’m trying to work with cp1251 encoding. Everything works fine, until
i try to use “percent substitutions” - params values are passed in
unicode, ignoring Tk.encoding value.
In pure Tcl all works normal -
encoding system “cp1251”
-command [list tblCmd $table(array) %i %C %s]
%s value is passing to tblCmd in cp1251
but when i try to do something like that in ruby
Tk.encoding = ‘CP1251’
@entry = TkEntry.new
@entry.configure(‘validatecommand’,[proc {|s| v(s)},’%s’])
%s is passing to v in utf-8
Such behavior is bug, feature or i’m doing something wrong?
It there any way to retrive “percent substitutions” values in correct
encoding?
···
–
Best regards,
Nikolay
Hello Hidetoshi,
Wednesday, November 19, 2003, 11:23:19 AM, you wrote:
In pure Tcl all works normal -
encoding system “cp1251”
-command [list tblCmd $table(array) %i %C %s]
%s value is passing to tblCmd in cp1251
but when i try to do something like that in ruby
Tk.encoding = ‘CP1251’
@entry = TkEntry.new
@entry.configure(‘validatecommand’,[proc {|s| v(s)},‘%s’])
%s is passing to v in utf-8
After calling Tk.encoding_system = ‘cp1251’,
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
···
–
Best regards,
Nikolay
Hello Hidetoshi,
Thursday, November 20, 2003, 10:44:10 AM, you wrote:
Tk.encoding_convertto(TkComm::string(arg_val[idx]), enc)
Seems that something wrong here.
I try to replace it with this for testing and debug purpose
puts Tk.encoding_convertto(TkComm::string(arg_val[idx]), enc)
puts Iconv.iconv(‘CP1251’,‘UTF-8’,TkComm::string(arg_val[idx]))
arg_cnv << Iconv.iconv(‘CP1251’,‘UTF-8’,TkComm::string(arg_val[idx]))
works right
···
–
Best regards,
Nikolay
Hello, Hidetoshi!
??>> puts Iconv.iconv(‘CP1251’,‘UTF-8’,TkComm::string(arg_val[idx]))
??>> arg_cnv << Iconv.iconv(‘CP1251’,‘UTF-8’,TkComm::string(arg_val[idx]))
??>>
??>> works right
Hmmm…
Could you try to replace
‘Tk.encoding_convertto(TkComm::string(arg_val[idx]), enc)’
to ‘Tk.fromUTF8(TkComm::string(arg_val[idx]), enc)’?
Works right. Thanks a lot. Will this fix became official?
Is the value of enc is ‘cp1251’?
Yes, of course.
By the way, why such functions as
Tk.encoding_convertto
Tk.fromUTF8
are not described anywhere?
With best regards,
Nikolay Ponomarenko.
···
You wrote on Fri, 21 Nov 2003 02:04:10 +0900: ??>> I try to replace it with this for testing and debug purpose ??>> ??>> puts Tk.encoding_convertto(TkComm::string(arg_val[idx]), enc)