Проблема с кириллицей при использовании Curses::UI под FreeBSD 14

Нужно было сделать небольшой интерфейс с помощью Curses::UI.

Я набросал небольшой пример на Perl5:

use strict;
use warnings;
use utf8;
use Term::ReadKey;
use Curses::UI;
use POSIX qw(setlocale LC_ALL);  # Импортируем setlocale и LC_ALL
use open qw(:std :encoding(UTF-8));

# Устанавливаем локаль для поддержки кириллицы
setlocale(LC_ALL, "ru_RU.UTF-8");

binmode STDERR, ':encoding(UTF-8)';
binmode STDOUT, ':encoding(UTF-8)';

# Создаем объект интерфейса
my $cui = Curses::UI->new(-color => 1);

# Получаем размеры терминала
my ($max_x, $max_y) = GetTerminalSize(); # Устанавливаем размеры окна

# Вычисляем координаты для центрирования окна
my $start_y = int(($max_y - 25) / 2);
my $start_x = int(($max_x - 80) / 2);

# Создаем окно
my $window = $cui->add(
    'main_window',
    'Window',
    -border => 1,
    -title  => 'Центрированное окно',
    -width  => 80,
    -height => 25,
    -y      => $start_y,
    -x      => $start_x,
);

# Создаем список элементов
my @items = ("Элемент 1", "Элемент 2", "Элемент 3", "Элемент 4", "Элемент 5", 
             "Элемент 6", "Элемент 7", "Элемент 8", "Элемент 9", "Элемент 10",
             "Элемент 11", "Элемент 12", "Элемент 13", "Элемент 14", "Элемент 15");

# Добавляем список в окно
$window->add(
    'item_list',
    'Listbox',
    -values => \@items,
    -label  => 'Выберите элемент:',
    -width  => 78,  # Ширина списка
    -height => 20,  # Высота списка
    -onchange => sub {
        my $selected_item = $window->get('item_list')->get();
        $cui->message('Выбранный элемент', "Вы выбрали: $selected_item");
    },
);

# Запускаем интерфейс
$cui->set_binding(sub { exit }, 'q');  # Выход по нажатию 'q'
$cui->mainloop(); 

Все это делал под FreeBSD 14.1. И замечаю, что часть русского текста выводится "битой". Вот скрин:

проблема с кириллицей

Эксперименты с локалями и бубнами не помогли. Решил посмотреть как это работает на других моих системах, которые я изредка пользую. Точно такую же картину получил на предыдущей версии FreeBSD 14.0 и на Linux Debian. Один в один. Да, все эти системы предварительно полностью обновил на сегодняшнее утро.

FreeBSD freebsd-14.1 14.1-RELEASE-p4 FreeBSD 14.1-RELEASE-p4 GENERIC amd64
FreeBSD freebsd-14 14.0-RELEASE-p10 FreeBSD 14.0-RELEASE-p10 #0: Wed Sep 4 08:24:14 UTC 2024 GENERIC amd64
Linux debian-pc 6.1.0-25-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.106-3 (2024-08-26) x86_64 GNU/Linux

А вот ArchLinux и Linux Manjaro порадовали - там всё ровно получилось!

Linux archlinux-pc 6.10.8-arch1-1 #1 SMP PREEMPT_DYNAMIC Wed, 04 Sep 2024 15:16:37 +0000 x86_64 GNU/Linux
Linux majestio-pc 6.6.47-1-MANJARO #1 SMP PREEMPT_DYNAMIC Mon Aug 19 09:51:26 UTC 2024 x86_64 GNU/Linux

с кириллицей всё нормально

Вопрос: по сути очевидный - "куда копать"?

Мне вообще-то нужно только под FreeBSD. Я понимаю, что можно легко отказаться от русского языка, сделать на английском. Но не хочется от проблем убегать. Есть какие мысли?


Ответы (0 шт):