LINUX.ORG.RU

Gtk2-Perl и кодировки


0

0

Недавно решил попробовать попользоваться из Perl библиотеками Gtk2 (пакет Gtk2-Perl) и возникли проблемы с кодировками. Если использовать обычные строки при создании виджетов, то в какой бы кодировке они не были (koi8, cp1251, utf-8) на виджете вместо русского "крякозябры". Нашел единственный выход в использовании функции Unicode::String::utf8($str), где $str - строка, набранная в редакторе при использовании кодировки utf-8. В этом случае программа выглядит так:

$window = Gtk2::Window->new(Unicode::String::utf8("русский текст в utf-8"));

Еще хуже ситуация, когда в виджет надо вывести информацию, которая хранится в кодировке koi8-r, тогда приходится перекодировать ее в utf-8:

my $cd = Locale::Recode->new (from => 'KOI8-R',
to => 'UTF-8');
...
$cd->recode ($row[$i]);
$model->set_value($iter, $i, Unicode::String::utf8($row[$i]));

Я не совсем понимаю действие функции Unicode::String::utf8 и если можно подскажите, может быть эта задача должна решаться другим способом.


1. use utf8; и используй её.

или

2. use encoding 'кодировка-в-которой-у-тебя-русские-строки';

ничего руками перекодировать не надо.

anonymous
()

Вилы.
Сам столкнулся с этим. В GTK2 внутренняя кодировка виджетов utf8 (на локаль - gtk_set_locale - gtk2 наплевать). Получение и установка текста из/в виджет всегда должны быть в utf8. Так что так или иначе всегда нужно перекодировать из локали в utf8. Можно попробовать установить локаль в UTF8, но не уверен, что получится.

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