Pelr + Tk

Тема в разделе "Perl программирование", создана пользователем Alyce, 9 апр 2009.

Статус темы:
Закрыта.
  1. Alyce

    Alyce Гость

    Добрый день.
    На 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';" то все пишется кракозяблами, а "Договор" по русски.

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

    Vovochka Гость

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

    Alyce Гость

    Пока все на винде.
    В activeState IDE.

    В 1251 соответственно.

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

    Vovochka Гость

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

    Alyce Гость

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

    gawriil Гость

    use Encode;

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


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

Поделиться этой страницей