tty1 中不可讀的菱形字元
我的 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 程式碼映射**
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 控制台中的預設字型中獲得什麼。這使用ncurses測試程序,顯示更多/更少的程式碼 0-255:
一、 UTF-8 模式下的 Latin-1 字元:
然後是沒有UTF-8 模式的 Latin-1 字元:
並使用 UTF-8 模式,但
luit
使用 ISO8859-2 編碼執行,並且使用相同的測試程序pl_PL
(有點迂迴,但你可以比較):並將其與
xterm
:總之,您可能會注意到在 Linux 控制台中使用有限字型用於 UTF-8 模式的**Latin-1字元集的一些菱形。**但是波蘭語(不同的字元集)似乎被很好地覆蓋了。