如何在Linux虚拟终端中显示Unicode?


19

读取Unicode中的任何数据都无法在Linux终端中正确显示(这意味着打开的虚拟终端没有X窗口)。

在这里的讨论中读到,安装诸如JFBTERM之类的程序确实可以正常工作,所以我想知道是否没有任何方法可以配置终端机以正确处理unicode,而无需任何额外的软件。

在Windows终端(gnome-terminal,xterm等)上,它看起来像这样:

侏儒终端

在虚拟终端上,它看起来像这样:

伏特

在带有JFBTERM的虚拟终端上,它看起来像这样:

jbfterm

这是的输出的屏幕截图locale

地区

这是输出showconsolefont

showconsolefont

有谁知道仅使用默认虚拟终端是否可以完成相同的工作?

Answers:


5

控制台字体最多可以加载512个(我认为是这样的)不同字形的字体。通常只有256个字形。

要显示使用少于200个非复杂符号的拉丁语,西里尔语或其他语言是没有问题的。

但是,对于复杂的脚本或需要大量不同符号的脚本(例如日语),您只能使用额外的布局来处理它。

请注意,如果ASCII和两个假名集的限制512应该足够,则存在宽度问题。

CJK和假名适合正方形,它们是拉丁字母宽度的两倍。这不是控制台可以立即使用的。

您可以求助于旧的丑陋的“ Halfwidth Katakana”(甚至找到这样的旧字体),或者将控制台设置为40列宽度,并使拉丁字母的宽度与假名一样。

我不知道Kana有这样的控制台字体。您应该自己绘制(有一些工具可以这样做,您可以只复制位图日语字体的点。

同样,您可以用来iconv将假名音译为ASCII。


3

您需要一种实际上具有这些字符的字体。例如Arch Linux推荐Lat2-Terminus16

要尝试,只需在虚拟控制台中发出以下命令:setfont Lat2-Terminus16

至于其余的,大多数现代发行版已经开箱即用。


2

在对另外LANG/LC_ALLstty iutf8需要告诉终端做什么,你可能需要setfont再加载一个有用的字体和映射。如果仍然有问题,请检查内核配置中的CONFIG_NLS_xx设置,modprobe nls_utf8如果它不会自动加载,则可能需要(我认为这仅适用于Unicode文件名)。

一些linux发行版提供了脚本unicode_startunicode_stop脚本来自动执行此操作。

如果less引起问题,则可能需要设置环境变量LESSCHARSET(如果错误,则不设置)。

Markus Kuhn 针对Unix / LinuxUTF-8和Unicode常见问题解答是无价的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.