Debian

tty1 中不可讀的菱形字元

  • September 22, 2016

我的 Debian Jessie 出了點問題。通常我將 tty7 與 GUI 一起使用,這裡一切都很好。但是在 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 應該可以工作。但事實並非如此。有小費嗎?

*GUI 上tty7*使用 X 字型,而tty1使用 Linux 控制台字型(限制為 512 種不同的字形)。Linux 控制台正在顯示那些將顯示 Unicode替換字元的菱形(取決於字型),因為它試圖顯示的程式碼不是合法的 UTF-8。

您會得到 ISO-8859-1 等的這種行為。您可能還記得 ISO-8859-1 程式碼映射**0xa00xffUnicode0x00a00x00ff**. 但在 UTF-8 中,字節看起來不同。

“鍵入”文件(可能使用cat)不受語言環境的影響。數據的編碼和終端的模式(UTF-8 與否)決定了字元列印是否正常。

rxvt-unicode的一個有趣(錯誤)特性是它會注意到非 UTF-8 數據並有助於假設它是 ISO-8859-1 並(默默地)將其轉換為 Unicode。波蘭語將是 ISO-8859-2,看起來基本相同

如果您碰巧使用 rxvt-unicode 並檢查非 UTF8 波蘭語文本,那將解釋問題中的所有症狀。

file實用程序可以合理猜測文本是否為 UTF-8。

在澄清之後,這裡有一些螢幕截圖顯示了您可以從 Linux 控制台中的預設字型中獲得什麼。這使用ncurses測試程序,顯示更多/更少的程式碼 0-255:

一、 UTF-8 模式下的 Latin-1 字元:

使用 UTF-8 的 Latin-1 覆蓋率

然後是沒有UTF-8 模式的 Latin-1 字元:

沒有 UTF-8 的 Latin-1 覆蓋

並使用 UTF-8 模式,但luit使用 ISO8859-2 編碼執行,並且使用相同的測試程序pl_PL(有點迂迴,但你可以比較):

使用 <code>luit</code> 的 Latin-2 覆蓋率

並將其與xterm

使用 <code>xterm</code> 的 Latin-2 覆蓋率

總之,您可能會注意到在 Linux 控制台中使用有限字型用於 UTF-8 模式的**Latin-1字元集的一些菱形。**但是波蘭語(不同的字元集)似乎被很好地覆蓋了。

引用自:https://unix.stackexchange.com/questions/311398