我的 Debian Jessie 出了点问题。通常我使用带有 GUI 的 tty7,这里一切都很好。但在 tty1 中,波兰语字符(都是从 UTF-8 文件中键入和读取的)由垂直菱形或菱形表示。与此类似,只有全白色(黑色背景)。
◊
我猜我的所在地看起来不错。
LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
它们在 tty7 上的 GUI 中是相同的,这里一切都很好。据我所知和经验,tty1 应该可以工作。但事实并非如此。有小费吗?
答案1
图形用户界面开启tty7
使用 X 字体,同时tty1
使用 Linux 控制台字体(限制为 512 种不同的字形)。 Linux 控制台显示那些菱形(取决于字体),其中 Unicode替换字符会显示,因为它尝试显示的代码不是合法的 UTF-8。
您会得到 ISO-8859-1 等的这种行为。您可能还记得 ISO-8859-1 代码0xa0
到0xff
映射到 Unicode0x00a0
到0x00ff
。但在 UTF-8 中,字节看起来不同。
“键入”文件(可能使用cat
)不受区域设置的影响。这编码的数据和模式终端的(UTF-8与否)决定字符是否正常打印。
一个有趣的(错误的)特征rxvt-unicode是它注意到非 UTF-8 数据,并假设它是 ISO-8859-1 并(默默地)将其转换为 Unicode。波兰语为 ISO-8859-2,看起来基本相同
如果您碰巧使用 rxvt-unicode 并检查非 UTF8 波兰语文本,那就可以解释问题中的所有症状。
该file
实用程序可以合理猜测文本是否为 UTF-8。
在澄清之后,这里有一些屏幕截图来展示您的内容能从 Linux 控制台中的默认字体获取。这使用了恩诅咒测试程序,显示更多/更少的代码 0-255:
首先,UTF-8模式下的Latin-1字符:
然后是 Latin-1 字符没有UTF-8 模式:
并使用UTF-8模式,但运行luit
使用 ISO8859-2 编码,并使用相同的测试程序pl_PL
(有点迂回,但你可以比较):
并将其与xterm
:
总之,您可能会注意到一些含片拉丁语1在 Linux 控制台中使用 UTF-8 模式的有限字体的字符集。但波兰语(一种不同的字符集)似乎已得到很好的覆盖。