bru*_*aga 21 linux terminal unicode
以 Unicode 格式读取任何数据在 Linux 终端中都无法正确显示(意思是在没有 X 窗口的情况下打开的虚拟终端)。
我在这里的讨论中读到安装JFBTERM 之类的程序,它确实有效,所以我想知道是否没有任何方法可以配置(控制台字体?)终端以在没有任何额外软件的情况下正确处理 unicode。
在 Windows 终端(gnome-terminal、xterm 等)上,它看起来像这样:
在虚拟终端上它看起来像这样:
在带有 JFBTERM 的虚拟终端上,它看起来像这样:
这是输出的屏幕截图locale
:
这是输出showconsolefont
:
有谁知道是否可以仅使用默认虚拟终端来完成相同的操作?
您需要一种实际包含这些字符的字体。例如,Arch Linux 推荐Lat2-Terminus16
。
要尝试它,只需在虚拟控制台中发出以下命令:setfont Lat2-Terminus16
。
至于其余的,大多数现代发行版已经开箱即用地支持它。
控制台字体可以加载多达 512 个(我认为,或类似的)不同字形的字体;然而,通常只有 256 个字形。
显示拉丁文、西里尔文或其他使用少于 200 个非复杂符号的语言没有问题。
但是,对于复杂的脚本,或需要大量不同符号的脚本(如日语),您只能使用额外的布局来处理它。
请注意,如果 512 的限制对于 ASCII 和两个假名集应该足够了,则存在宽度问题。
CJK 和 Kana 适合一个正方形,它们是拉丁字母宽度的两倍。这不是控制台可以开箱即用的。
你可以求助于旧的和丑陋的“Halfwidth Katakana”(甚至可能找到这种东西的旧字体),或者将你的控制台设置为 40 列宽,并让拉丁字母和假名一样宽。
我不知道 Kana 有任何这样的控制台字体;你应该自己画(有工具可以这样做,你可以复制位图日文字体的点。
此外,您可以使用iconv
将假名音译为 ASCII。
除了LANG/LC_ALL
,stty iutf8
需要告诉终端要做什么之外,您可能setfont
还需要加载有用的字体和映射。如果您仍然遇到问题,请检查内核配置的设置CONFIG_NLS_xx
,如果它没有自动加载,您可能需要这样做modprobe nls_utf8
(不过我认为这仅适用于 Unicode 文件名)。
一些 Linux 发行版提供了unicode_start
脚本unicode_stop
来自动执行此操作。
如果less
导致问题,可能需要LESSCHARSET
设置环境变量(如果错误则取消设置)。
Markus Kuhn 的Unix/Linux UTF-8 和 Unicode 常见问题解答非常宝贵。
归档时间: |
|
查看次数: |
37401 次 |
最近记录: |