[fxruby-users] Troubles with FXTextField encoding

29 views
Skip to first unread message

Damián M. González

unread,
Jan 19, 2013, 5:00:12 PM1/19/13
to FXRuby User List, Fox C++ users list
 Hello Jeroen, people. I'm having troubles with the encoding. First of all, I'll tell you that in the app that am developing am using ñüáéíóú characters. I've realized that when the user write some of those characters and the app take it for work with it, later I come with troubles, that's because the string taked from the #FXTextField has ascii-8bit encoding, and as you can see here: http://www.sciencebuddies.org/science-fair-projects/project_ideas/CompSci_ASCII_Table.shtml the characters ñüáéíóú doesn't exist. So I've tried to change the encoding of the #FXTextField to UTF-8 but I didn't found the right Constant: http://rubydoc.info/gems/fxruby/frames , am I missing it? is somewhere hidding? nevermind. This is a little worse: I've tried to change the encoding as I said to another one, not UTF-8(because I didn't find it) but to CP850, so I did something like this:

#...
tf = FXTextField.new(parent, 10)
tf.font=(app, FXFont.new(app, "Segoe UI,90,normal,5,0,#{FONTENCODING_CP850},0"))
#checking the encoding..
puts tf.encoding
#=> 850

 Seems to work, but it doesn't. When I enter text in the #FXTextField, press enter and ask for the encoding, ascii-8bit appears, not cp850...

tf.connect(SEL_COMMAND) do |sender, selector, data|
  puts data.encoding
  #=> <Encoding:ASCII-8BIT>
end

 So I really don't know what happen when the user enter any of ñüáéíóú,... I'm getting strange errors when I handle those writed strings. Do any of you have some advice about this? will be thankfull to hear them. Is this a bug? Thanks for your time.

P.D.: By the way I'm using FXRuby 1.6.25, Windows 7 Proffesional 64 bits, Ruby 1.9.3p327 (2012-11-10) [i386-mingw32].

Damián M. González

unread,
Feb 14, 2013, 6:39:40 AM2/14/13
to FXRuby User List, Fox C++ users list
 Does anybody can help me with this? Thank you guys.


From: gonzale...@hotmail.com
To: fxruby...@rubyforge.org; foxgui...@lists.sourceforge.net
Subject: Troubles with FXTextField encoding
Date: Sat, 19 Jan 2013 19:00:12 -0300

Damián M. González

unread,
Feb 14, 2013, 7:09:32 AM2/14/13
to FXRuby User List, Fox C++ users list
 Perhaps if anybody can respond me again this old question I can solution this problem:

ashraf01 wrote Oct 09, 2007; 11:54am

 How could I take unicode characters(Chinese, Japanese etc) as Input using FXTextField.

I am using WindowsXp & also setting Language options from the control panel.

I am very new in this environment. Could anybody help plz..........


the only response was:


At the moment i doubt this is not possible. FOX does not support the input methods API 

at the moment.


 It is solved now?


 Here is a little refresh of the problem: If I generate strings inside the source code it gets the utf-8 encoding as expected, but at the moment of re-assing a string to a variable doing it by the user in a #FXTextField, the string becomes one with ascii-8bit encoding. So this is a big trouble for me because Windows use CP1252 encoding in their box titles and Ruby raises an error when I try to convert ascii-8bit into CP1252, even if I try to convert it into utf-8 encoding. If I try to show up the string as it is now(with ascii-8bit encoding) in a title in a #FXDialogBox I get strange characters. The fact is I don't know how the encoding works in the internals of Fox, how the encoding works in an #FXTextField. There are rare things, for example: entering "Á" in a FXTextField, that value will be showed in a cell in a #FXTable, it shows it correctly "Á", when I show up that string in a title of a FXDialoBox I get strange characters, not "Á"; entering "Á" in a #FXTextField, that value will be showed as an item in a #FXListBox and a #FXLabel, in both it shows "á", is not the same, it's downcased. So that's why I can't comprhend the problem, is a strange behaviour.


 The solution?


 Meaby establish UTF-8 as encoding of any text typed in a #FXTextField, but I don't know how. I didn't found documentation about it.

 Meaby I can find another solution if knows how the internals works about the encoding.


 Thanks for your time, I'll will appreciate your help.

Subject: RE: Troubles with FXTextField encoding
Date: Thu, 14 Feb 2013 08:39:40 -0300

Damián M. González

unread,
Feb 14, 2013, 9:32:02 PM2/14/13
to Jeroen, FXRuby User List, Fox C++ users list


> Date: Thu, 14 Feb 2013 09:14:02 -0600
> From: jer...@fox-toolkit.com
> To: gonzale...@hotmail.com
> CC: fxruby...@rubyforge.org; foxgui...@lists.sourceforge.net
> Subject: Re: [Foxgui-users] Troubles with FXTextField encoding

>
> On Thu, 14 Feb 2013 08:39:40 -0300
> Damián M. González <gonzale...@hotmail.com> wrote:
>
>
> > Hello Jeroen, people. I'm having troubles with the encoding. First of all, I'll tell you that in the app that am developing am using ñüáéíóú characters. I've realized that when the user write some of those characters and the app take it for work with it, later I come with troubles, that's because the string taked from the #FXTextField has ascii-8bit encoding, and as you can see here: http://www.sciencebuddies.org/science-fair-projects/project_ideas/CompSci_ASCII_Table.shtml the characters ñüáéíóú doesn't exist. So I've tried to change the encoding of the #FXTextField to UTF-8 but I didn't found the right Constant: http://rubydoc.info/gems/fxruby/frames , am I missing it? is somewhere hidding? nevermind. This is a little worse: I've tried to change the encoding as I said to another one, not UTF-8(because I didn't find it) but to CP850, so I did something like this:
> > #...tf = FXTextField.new(parent, 10)tf.font=(app, FXFont.new(app, "Segoe UI,90,normal,5,0,#{FONTENCODING_CP850},0"))#checking the encoding..puts tf.encoding#=> 850

> > Seems to work, but it doesn't. When I enter text in the #FXTextField, press enter and ask for the encoding, ascii-8bit appears, not cp850...
> > tf.connect(SEL_COMMAND) do |sender, selector, data| puts data.encoding #=> <Encoding:ASCII-8BIT>end
> > So I really don't know what happen when the user enter any of ñüáéíóú,... I'm getting strange errors when I handle those writed strings. Do any of you have some advice about this? will be thankfull to hear them. Is this a bug? Thanks for your time.
> > P.D.: By the way I'm using FXRuby 1.6.25, Windows 7 Proffesional 64 bits, Ruby 1.9.3p327 (2012-11-10) [i386-mingw32].
>
> I can't speak for Ruby, but FOX should support UTF-8.
>
> For all this to work, ensure that your FOX library is compiled with -DUNICODE=1
> otherwise the interface to Win32 won't support unicode.
>
>
>
>
>
>
> -- JVZ
>
>
>
> +----------------------------------------------------------------------------+
> | Copyright (C) 09:10 02/14/2013 Jeroen van der Zijp. All Rights Reserved. |
> +----------------------------------------------------------------------------+

 Thank you Jeroen for answer. Sadly seems that there's no maintainer of the framework for Ruby, and I don't know how to check if the gem we(the users of Ruby) download is compiled with -DUNICODE=1, Ruby is my first language and I'm kind of noob related to C++.  I'm in middle of a project, hope to get some answer about if FXRuby is compiled with that option, if not if it can be fixed, etc. Does anybody knows that?

Lars Kanis

unread,
Feb 16, 2013, 4:03:59 AM2/16/13
to fxruby...@rubyforge.org, Fox C++ users list
Hi Damián,

sorry for responding so late. It is a spare time project for me and I don't know the fox toolkit that good, so I'll have to try things out or look at the sources. Moreover I'm quite lazy in answering user questions, generally.

Regarding your string encoding issue: FXRuby uses UTF-8 encoding for all text strings since version 1.6.0. However the strings were not properly marked as UTF-8 in Ruby-1.9. That is obviously a bug. You could set the encoding of a string by hand per String#force_encoding('UTF-8').

Please try out the new fxruby version 1.6.26.pre1 I just released. It should now properly return UTF-8 strings for all text returning methods.

Some advices for unicode handling in fxruby: You should not use any encodings but UTF-8 when interacting with fxruby. FXRuby will not check or convert other encodings but will consider everything as UTF-8. You moreover should mark all your *.rb files with a header line like this:

# encoding: utf-8

Then even Chinese characters should be no problem. There are also some test cases in the test suite of fxruby for unicode handling.

Regarding the font encoding: I guess FONTENCODING_UNICODE should be the suitable encoding for FXFont, but I didn't tried it out.

Hope that helps.

Regards,
Lars



Am 15.02.2013 03:32, schrieb Damián M. González:
> > Hello Jeroen, people. I'm having troubles with the encoding. First of all, I'll tell you that in the app that am developing am using ñüáéíóú characters. I've realized that when the user write some of those characters and the app take it for work with it, later I come with troubles, that's because the string taked from the #FXTextField has ascii-8bit encoding, and as you can see here: http://www.sciencebuddies.org/science-fair-projects/project_ideas/CompSci_ASCII_Table.shtml the characters ñüáéíóú doesn't exist. So I've tried to change the encoding of the #FXTextField to UTF-8 but I didn't found the right Constant: http://rubydoc.info/gems/fxruby/frames , am I missing it? is somewhere hidding? nevermind. This is a little worse: I've tried to change the encoding as I said to another one, not UTF-8(because I didn't find it) but to CP850, so I did something like this:
> > #...tf = FXTextField.new(parent, 10)tf.font=(app, FXFont.new(app, "Segoe UI,90,normal,5,0,#{FONTENCODING_CP850},0"))#checking the encoding..puts tf.encoding#=> 850
> > Seems to work, but it doesn't. When I enter text in the #FXTextField, press enter and ask for the encoding, ascii-8bit appears, not cp850...
> > tf.connect(SEL_COMMAND) do |sender, selector, data| puts data.encoding #=> <Encoding:ASCII-8BIT>end
> > So I really don't know what happen when the user enter any of ñüáéíóú,... I'm getting strange errors when I handle those writed strings. Do any of you have some advice about this? will be thankfull to hear them. Is this a bug? Thanks for your time.
> > P.D.: By the way I'm using FXRuby 1.6.25, Windows 7 Proffesional 64 bits, Ruby 1.9.3p327 (2012-11-10) [i386-mingw32].
>
> I can't speak for Ruby, but FOX should support UTF-8.
>
> For all this to work, ensure that your FOX library is compiled with -DUNICODE=1
> otherwise the interface to Win32 won't support unicode.
>
>
>
>
>
>
> -- JVZ
>
>
>
> +----------------------------------------------------------------------------+
> | Copyright (C) 09:10 02/14/2013 Jeroen van der Zijp. All Rights Reserved. |
> +----------------------------------------------------------------------------+

 Thank you Jeroen for answer. Sadly seems that there's no maintainer of the framework for Ruby, and I don't know how to check if the gem we(the users of Ruby) download is compiled with -DUNICODE=1, Ruby is my first language and I'm kind of noob related to C++.  I'm in middle of a project, hope to get some answer about if FXRuby is compiled with that option, if not if it can be fixed, etc. Does anybody knows that?


_______________________________________________
fxruby-users mailing list
fxruby...@rubyforge.org
http://rubyforge.org/mailman/listinfo/fxruby-users

Damián M. González

unread,
Feb 16, 2013, 7:58:14 AM2/16/13
to la...@greiz-reinsdorf.de, FXRuby User List, Fox C++ users list
 Hi Lars, thanks for answer, I understand the facts.

 I've tried before the solution you propose without success, Ruby raises an error when you try to convert(encode(Encoding::UTF_8)), or point(force_encoding(Encoding::UTF_8)) ascii-8bit to UTF-8 for some reason.

 Now I've tried the pre-release of the 1.6.26 and works as a love, this problem was scaring me but not anymore.

 For what I know the FONTENCODING_DEFAULT setted by default for all the Fonts points to FONTENCODING_UNICODE, in words are the same, no necessity to change it for me in anywhere.

 I use every Ruby file with #encoding: utf-8 up above. Thank you so much for resolve this and to JVZ for respond the call.

 Regards.
 Damián-IgorJorobus.


Date: Sat, 16 Feb 2013 10:03:59 +0100
From: la...@greiz-reinsdorf.de
To: fxruby...@rubyforge.org
CC: gonzale...@hotmail.com; foxgui...@lists.sourceforge.net
Subject: Re: [fxruby-users] [Foxgui-users] Troubles with FXTextField encoding

Lars Kanis

unread,
Feb 16, 2013, 1:00:53 PM2/16/13
to "Damián M. González", FXRuby User List, Fox C++ users list
Hi Damián

 Now I've tried the pre-release of the 1.6.26 and works as a love, this problem was scaring me but not anymore.

Sounds good. I'll release 1.6.26 soon.

Regards,
Lars

Reply all
Reply to author
Forward
0 new messages