3

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

В этом поле ввода ввод акцентированных символов (символы очень часто встречаются на французском языке) или специальных символов UTF-8, таких как em-dash "-", перемещает курсор на 4 символа вправо, а не на один. После 3 или 4 "специальных" символов поле ввода полностью недоступно из-за этого артефакта.

Точно так же, когда я отображаю меню с диалогом, акцентированные символы сдвигают правую границу диалогового окна. Это меньше мешает, чем в inputBox, но все же это визуальный дискомфорт.

Я пробовал все виды вещей, чтобы заставить это работать, но безрезультатно.

Для справки, вот мои переменные среды LC_ *:

LC_PAPER=fr_FR.UTF-8
LC_ADDRESS=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_ALL=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_MESSAGES=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
LC_COLLATE=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8
LC_CTYPE=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
LANG=fr_FR.UTF-8

Что я мог сделать?

(Изменить: как указано ниже, я нахожусь на Mac, и возникает та же проблема, использую ли я iTerm2 или встроенный эмулятор терминала.)

2 ответа2

3

Я знаю, что это старый вопрос, но, тем не менее, ответ может быть полезным ...

Я решил проблему, установив следующую переменную среды:

export NCURSES_NO_UTF8_ACS=1

У меня есть putty с терминальной строкой putty-256color и машиной RHEL6. Это также работает при использовании tmux или screen. Для получения дополнительной информации об этой переменной просто вызовите man 3 ncurses.

0

Убедитесь, что ваш терминал находится в режиме UTF-8. Если вы устанавливаете переменные локали из вашего ~/.bashrc, как это делают некоторые, то они будут применяться к оболочке, но не к ее родительскому терминалу. Используйте tr \\0 \\n </proc/$PPID/environ чтобы проверить, имеет ли терминал те же переменные локали. (Некоторые (например, GNOME Terminal) имеют меню явной кодировки символов, которое вы можете использовать вместо этого.)

Кроме того, убедитесь, что локаль указана с помощью locale -a - если это не так, отредактируйте /etc/locale.gen и запустите locale-gen от имени пользователя root.


Обратите внимание, что не рекомендуется устанавливать LC_ALL без необходимости, так как это делает невозможным переопределение более специфических переменных. Достаточно просто LANG

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .