Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: GUI > Как Tk заставить понимать кирилицу?


Автор: korob2001 4.9.2004, 12:40
Ну вопрос собсвенно в названии темы.
OS: WinXP Pro

Заранее спасибо,
Денис

Автор: ElectricalStorm 5.9.2004, 18:07
можно попробовать хранить данные в utf а потом налету када поднимается гуй транслировать все в cp-1251
модули трансляции на спане

Автор: korob2001 5.9.2004, 18:51
OK. Попробую описать проблему подробнее.
Вот для примера набросал простейший код. Например такой:
Код

#!/usr/bin/perl -w
use strict;
use warnings;
use Tk;
my $txt;
my $file = 'mainSave.txt';
my $time = localtime;
my $mainWindow = new MainWindow;
  $mainWindow->title("My Test Window");
  $mainWindow->geometry("300x110+300+200");
my $fram1 = $mainWindow->Frame( -padx => 15,
                               -pady => 15 )->pack;
my $label = $fram1->Label( -text => 'Please enter your message: ' )->pack( -side => 'left' );
my $entry = $fram1->Entry( -textvariable => \$txt )->pack( -side => 'left' );
my $fram2 = $mainWindow->Frame( -padx => 15,
                               -pady => 15 )->pack;
my $butt2 = $fram2->Button( -text => 'Save to file',
                           -command => sub {
                                            my $mess = $txt;
                                            my $file = $file;
                                            my $time = $time;
                                            SaveToFile( $mess, $file, $time );
                                       } )->pack( -side => 'left' );
my $butt1 = $fram2->Button( -text => 'Exit',
                                -command => sub { exit } )->pack( -side => 'right' );
sub SaveToFile {
   my( $mess, $file, $time ) = @_;
   local *F;
   open( F, ">> $file" ) or die "Can't open file '$file': $!\n";
    print F "$mess|$time\n";
   close( F ) or die "Can't close file '$file': $!\n";
}

MainLoop;

Необходимо надписи Exit и Save to file на кнопках, а также строку Please enter your message заменить на аналогичные русские.
Добавлено @ 19:01
ElectricalStorm Ой, пока я писал, ты уже ответил.
Не можешь подробнее объяснить. Я пробовал перекодировать строки с помощью самодельного класса в несколько кодировок, такие как koi8r, Dos, Iso и т.п., но ничего не вышло. Может ты знаешь какую кодировку юзает Tk?

Автор: ElectricalStorm 6.9.2004, 09:12
ща попробую

Автор: ElectricalStorm 6.9.2004, 11:35
блин Unicode::UTF8 не встает сволочь.... sad.gif
Добавлено @ 11:40
вечером еще попробую

вот тут посмотрите .... что то похожее
http://www.mail-archive.com/[email protected]/msg29099.html

Автор: korob2001 6.9.2004, 17:29
Цитата

вот тут посмотрите .... что то похожее

Да похоже, но помоему не то.
Вот открыл файл Tk.pm, нашёл такой хэш:
Код

our %font_encoding = ('jis0208' => 'jis0208-raw',
                     'jis0212' => 'jis0212-raw',
                     'ksc5601' => 'ksc5601-raw',
                     'gb2312'  => 'gb2312-raw',
                     'unicode' => 'ucs-2le',
                    );

Может разгадка в нём? Но проблема в том, что я с такими кодировками не сталкивался раньше, кроме unicode. Может кто знает как их перекодировать?

Автор: Guest 16.11.2004, 19:26
еще разок
use encoding "ru_RU.CP1251";

Автор: korob2001 17.11.2004, 01:50
Ещё разок, СПАСИБО. ;)
Я уже стал сомневаться в том, что Tk можно научить распознавать кирилицу.

Автор: ... 9.11.2005, 17:15
огромнючее спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)