Pelr + Tk

  • Автор темы Alyce
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Alyce

Гость
#1
Добрый день.
На perl писал ранее, на Tk - только начинаю.
Пока это все на windows - но нужно чтобы работало и на Linux.

Создаю меню.

$main->configure(-menu => my $menubar = $main->Menu);
my $contract = $menubar->cascade(-label => '~Договор');
my $help = $menubar->cascade(-label => '~Help');
$help->command(-label => 'О программе', -command => sub {print "About\n"});

Проблема кодировке:
- если я ставлю в начале "use encoding 'cp1251';" то Фраза "Договор" пишется кракозяблами - все остальное по русски.
- если убираю "use encoding 'cp1251';" то все пишется кракозяблами, а "Договор" по русски.

Что я не так делаю?
Просьбы помочь.
Спасибо.
 
V

Vovochka

Гость
#2
Честно говоря, не писал гуйни на перле. В какой системе все отображаетсякракозябрами? Винда или линь?
В какой кодировке исходные файлы?
Попробуйте все перевести в utf8.
 
A

Alyce

Гость
#3
В какой системе все отображаетсякракозябрами? Винда или линь?
Пока все на винде.
В activeState IDE.

В какой кодировке исходные файлы?
В 1251 соответственно.

Попробуйте все перевести в utf8
А как бы мне это сделать?
Подскажите, пожалуйста.
 
V

Vovochka

Гость
#4
Скорее всего Tk пытается выводить строчки в utf8
Запишите то же слово в текстовый файл, назовите файл file.html
Открыв в браузере выберете кодировку utf8 и глянте, та же абракадабра?
Если да, то вы нашли нужную кодировку :)
А как бы мне это сделать?
Подскажите, пожалуйста.
Большинство современных текстоывх редакторов умееют сохранять файлы в различных кодировках.
Если же ваш редактор на такое не способен, рекомендую сменить :)
+ Можно написать простенький скрипт для перегона файлов.
Смотрите описание к модулю Encode
 
A

Alyce

Гость
#5
Вобщем, на Linux - все нормально. В случае, если все в UTF8 - в меню тоже русские буковки.
А вот в Windows - кракозяблы :D
Выходит это проблема Activestate Perl или porta TK под windows.
 
G

gawriil

Гость
#6
use Encode;

sub rus {
my $element_tmp = decode("cp866", "@_");
my $element = encode("cp1251", $element_tmp);
return $element;
}


Я лично так решил. Это для Tk. А вообще рекомендую Win32::GUI (Для виндовоза)
 
Статус
Закрыто для дальнейших ответов.