#49 How to display unicode charset in Win32::GUI?

open
nobody
None
5
2011-02-18
2011-02-18
Ahmet
No

Hi,

I'm working on a project and i added the multilanguage support.

Perl : (v5.12.2) MSWin32-x86 build 1203 294165,
OS : Windows 7 x86,
Installed languages in OS : English,Turkish

How to display the unicode charset in Win32::GUI Label->Text?
Example; added "russian language" but not display in label text.
I'm searching for solutions 4 days.
I'm founded this solutions (and other)

http://webcache.googleusercontent.com/search?q=cache:5HoSSFnETV4J:www.mail-archive.com/perl-win32-gui-users%40lists.sourceforge.net/msg04941.html+perl+win32+GUI+unicode+label&cd=5&hl=tr&ct=clnk&gl=tr&source=www.google.com.tr

http://webcache.googleusercontent.com/search?q=cache:l_gAFrhiqxMJ:www.mail-archive.com/perl-win32-gui-users%40lists.sourceforge.net/msg04944.html+perl+win32+GUI+unicode+label&cd=6&hl=tr&ct=clnk&gl=tr&source=www.google.com.tr

[My idea]
I have install the russian language in my OS? This is a solution?

Here is my codes.2 encode methods testing.
Turkish charset testing : ç

use warnings;
use strict;
use Win32::GUI();
use Data::Dumper;
use Encode qw/decode/;

my $str = "ç"; # This is "turkish" charset "ç"
$str = decode("utf-8", $str); # decoding "ç" char with utf-8
print Dumper($str); # And "ç" char dumped, output : \x{e7}

my $win = new Win32::GUI::Window(
-name => "win",
-text => "Unicode Test",
-width => 300,
-height => 200
);

$win->AddLabel(
-name => "labeun",
-text => "\x{e7}", # <--- Write here hex code char "\x{e7}"
# and look at the results. Displaying label text "ç". No problem.
-width => 50,
-height => 20
);
$win->Center();
$win->Show();
Win32::GUI::Dialog();
1;

I tried ucs2 encoding (and other) but didn't.
Example : Russian charset ф

use warnings;
use strict;
use Win32::GUI();
use Encode qw/encode decode/;
use Data::Dumper;
my $str = "ф"; # This is "russian" charset. * a == ф *
my $utf8 = decode("utf-8", $str); # decoding "ф" char with utf-8
my $ucs2 = encode("UCS-2LE",$utf8);
# and encoding char with UCS-2LE.Others have tried.!
# Other encoding schemes : UCS-2BE, UCS-2LE, UTF-16,
# UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE

my $win = new Win32::GUI::Window(
-name => "win",
-text => "Unicode Test",
-width => 300,
-height => 200
);

$win->AddLabel(
-name => "labeun",
-text => "$ucs2", # <--- Writing here encoding char.Displaying label t
+ext "unkown". FAIL
-width => 50,
-height => 20
);
$win->Center();
$win->Show();
Win32::GUI::Dialog();
1;

No problem other perl gui modules. Tested "russian charset" with wxPerl, Perl/Tk, Gtk2 modules and working good...But the whole project written with Win32::GUI module.Can not change
the "win32-gui" module with others! Did i use a different module? The current project consists of 15.000 lines. Rewrite project with other perl GUI module? This project finished ~30.000
lines.
I'm searcing and founded solution but working on "richedit" module. Text encoding and displaying in "richedit".I've tried this solution in win32::GUI "Addlabel" text but not working.Here is
the solution document but for richedit not working on "addlabel->Text();"

Regards...
Ahmet.

Discussion