LINUX.ORG.RU

Perl Tk::Text проблема с кирилицей


1

0

Здравствуйте Всем. Сделал небольшой скрипт с Tk/Perl и обнаружил что что в окне созданным методом Text плохо или совсем не редактируется введенный русский текст. То есть вводится нормальными русскими буквами. А дальше начинается барда. Курсор от мыши всегда позиционируется в середине. При использовании клавиш Влево Вправо половина строки наезжает на другую или вообще исчезает за пределами окна. И т д. Запуская скрипт из MC лицезрею следующие маты: e of uninitialized value in addition (+) at /usr/lib/perl5/vendor_perl/5.8.6/i386-linux/Tk/Text.pm line 1215. Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/vendor_perl/5.8.6/i386-linux/Tk/Text.pm line 1232. Tk::Error: bad text index "@,18" at /usr/lib/perl5/vendor_perl/5.8.6/i386-linux/Tk.pm line 247. Tk callback for .frame.text <Key-Down> (command bound to event) OC Mandriva2006, locale koi8-r. Помогите пож. Весь Инет перерыл. Как будто на Perl/Tk в России никто серьено не пишет. На двух форумах просил. С уважением.

anonymous

Возможно и не пришет. Пик популярности perl/tk прошел уж лет шесть как. Похоже, что насильственная utf-изация perl-а окончательно прибила perl/tk. Учи tcl.

anonymous
()
Ответ на: комментарий от anonymous

Причем здесь utf-изация perl-а ? Я в koi8r пробовал. Да все равно люди работали с и наработки какието должны были остатся. Да и не все такие полиглоты чтобы каждые 5 лет новый язык осваивать. Тогда в голове каша будет.

anonymous
()
Ответ на: комментарий от r_asian

Локаль koi8-r но я пробовал менять на utf8 Результат одинаков.

anonymous
()
Ответ на: комментарий от anonymous

> Причем здесь utf-изация perl-а ?

Притом, что менялось внутреннее представление строк с однобайтного на многобайтное, что вызывало чудовищные глюки в библиотеках, завязанных на предположении что 1 символ = 1 байту. В часто используемых библиотеках такое пофиксили, а в perl/tk, видимо, нет. Там с поддержкой кодировок вообще никогда особа хорошо не было.

anonymous
()

Tk:

tkscript.pl -font '*-iso8859-2'

определить кодировку во всем скрипте:

$mw->optionAdd("*font", "*-koi8-r");

GTK:

set_locale Gtk;

vilfred ☆☆
()
Ответ на: комментарий от vilfred

Ответ Ваш конечно неплохой. Но, я не нашел знакомых буков (Perl/Tk) optionAdd Это ведь уже из другой оперы. Если можно поподробнее. Чего то я читал о GTK. Прямо обидно- убил неделю на скрипт и вдруг на 1 символ один байт. Разработчики мандривы2006 просто запихали перл в свой дистуб и успокоились. козладнанцы. Вот чего не люблю линукс то за вечно глючную графическую оболочку. Через которую ничего серьезно не настроишь, типа интерфейсов или адсл-подключений или серверов. Все приходится делать напильником. Хотя потом робит надежно.

anonymous
()
Ответ на: комментарий от anonymous

я perl-tk ставил всегда со цпана... и радовался =)

vilfred ☆☆
()
Ответ на: комментарий от vilfred

> определить кодировку во всем скрипте:

> $mw->optionAdd("*font", "*-koi8-r");

Это проблему не решает. Виджет Text все равно жутко глючит при вводе русских букв, в любой локали. Работать можно только убрав autowrapping (-wrap=>'none') и делая перевод строки вручную. И все равно глючит, если текст выходит за границу виджета. Как лечить нигде не нашел.

anonymous
()
Ответ на: комментарий от anonymous

Большое спасибо! (-wrap=>'none') очень помогло. Простенько и со вкусом. А я то мучался. Ну с переводом строк вручнуюю.. Да бог с ним.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.