我正在fbterm
使用python-curses
库编写 TUI 软件。
为了获得全彩fbterm
,我阅读了它的手册页并得出结论,我需要将环境变量更改TERM
为fbterm
。
手册页:
By default, FbTerm sets environment variable "TERM" to value "linux", user need run "TERM=fbterm /path/to/program" to enable 256 color mode.
当我设置TERM=fbterm
并运行我的Python程序时。字符串文本没问题,但框/矩形绘图字符 ( -
|
┌
...) 被扰乱为 (Ä
³
¿
等)。
ÚÄÄÄÄÄ¿
³Meas.³
ÀÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÚÄÄÄÄÄ¿ ³1-shot ³³n-shot ³
³Setup³ ³ ³³ ³
ÀÄÄÄÄÄÙ ³ ³³ ³
ÚÄÄÄÄÄ¿ ³ ³³ ³
³Data ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÀÄÄÄÄÄÙ
ÚÄÄÄÄÄ¿
³About³ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÀÄÄÄÄÄÙ ³Target ³³Weather ³
ÚÄÄÄÄÄ¿ ³ ³³ ³
³Sys. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÀÄÄÄÄÄÙ
我做错了什么(失踪)?
昨天我交叉发布了堆栈溢出fbterm
,然后我意识到这个问题更多地与环境价值有关。所以我在这里发帖。原始帖子包含我的推理、我做了什么、我如何得出结论等等......(更详细)。
答案1
fbterm
如果我在任何字符映射既不是 ANSI_X3.4-1968(C
区域设置中的 ASCII)也不是 UTF-8 的区域设置中开始,我可以重现它(方框图不起作用) 。检查输出locale charmap
以查看您的语言环境中使用的字符映射(根据您的输出情况,可能是 ISO-8859-1 或 ISO-8859-15)并locale
查看当前的语言环境配置。
$ infocmp -1 fbterm | grep acs
acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
rmacs=\E[10m,
smacs=\E[11m,
您可以看到fbterm
,方框图字符是第 8 位设置p
的字节,因此我认为在使用 ISO8859-1 等字符集时,它与普通字符发生冲突(例如,映射到上面的VT100 的水平线字符\304
)符合Ä
ISO8859-1 又名 latin1)。
如果有可用的语言环境,最简单的解决方法是使用 UTF-8 语言环境。
请参阅locale -a
参考资料 获取系统上可用的区域设置列表,并fbterm
以以下形式开始:
LANG=en_US.UTF-8 fbterm
例如,fbterm
以 UTF-8 作为字符集的美国英语语言环境启动(假设未设置LC_ALL
和环境变量)。LC_CTYPE
您可能还想stty iutf8
在该终端中运行,因为在 UTF-8 语言环境中启动时,fbterm 似乎不会自行执行此操作。
在基于 Debian 的系统上,您可以dpkg-reconfigure locales
以超级用户身份运行来更改默认系统区域设置。