GNU 对话框和 UTF-8 字符

Cyr*_*lle 3 bash unicode utf-8

我在我的一个冗长的 shell 脚本中使用 GNU 对话框。我遇到的问题之一是当我要求一个输入框时,用户可以在其中输入一本书的标题(主要是法语)。

\n\n

在此输入框中,输入重音字符(\xc3\xa9\xc3\xa0\xc3\xa8 在法语中很常见)或特殊的 UTF-8 字符(例如破折号“\xe2\x80\x94”)会移动光标右边有 4 个字符,而不是 1 个。在 3 或 4 个“特殊”字符之后,输入框由于此工件而完全无法使用。

\n\n

同样,当我显示带有对话框的菜单时,重音字符会移动对话框的右边框。这比输入框中的障碍要小,但视觉上却很不舒服。

\n\n

我已经尝试了各种方法来使其正常工作,但无济于事。

\n\n

作为记录,这是我的 LC_* 环境变量:

\n\n
LC_PAPER=fr_FR.UTF-8\nLC_ADDRESS=fr_FR.UTF-8\nLC_MONETARY=fr_FR.UTF-8\nLC_NUMERIC=fr_FR.UTF-8\nLC_ALL=fr_FR.UTF-8\nLC_TELEPHONE=fr_FR.UTF-8\nLC_MESSAGES=fr_FR.UTF-8\nLC_IDENTIFICATION=fr_FR.UTF-8\nLC_COLLATE=fr_FR.UTF-8\nLC_MEASUREMENT=fr_FR.UTF-8\nLC_CTYPE=fr_FR.UTF-8\nLC_TIME=fr_FR.UTF-8\nLC_NAME=fr_FR.UTF-8\nLANG=fr_FR.UTF-8\n
Run Code Online (Sandbox Code Playgroud)\n\n

我能做什么?

\n\n

(编辑:如下所述,我使用的是 Mac,无论我使用 iTerm2 还是内置终端模拟器,都会出现同样的问题。)

\n

小智 5

我知道这是一个老问题,但答案可能有用......

我解决了设置以下环境变量的问题:

export NCURSES_NO_UTF8_ACS=1
Run Code Online (Sandbox Code Playgroud)

我有 putty 和 putty-256color 终端字符串和一台 RHEL6 机器。使用 tmux 或 screen 时它也适用。有关此变量的更多信息,只需调用“man 3 ncurses”。