無法在 ubuntu 18.04 的 xterm 中顯示 8 位字元
我已經嘗試了在論壇中可以找到的所有方法,並且無法在 kubuntu 18.04 下的 xterm 視窗中顯示任何 8 位字元(也不在早期版本中)。0x20-0x7e 範圍內的所有字元都按預期顯示,但 0x80-0xfe 範圍內沒有。當我嘗試時,根據設置,我會得到一個空白或黑色橢圓形問號的預設字形。我的簡單測試是:
迴聲 -e ‘\xa2 \xa3’
這些是字元 162 和 163(十進制),在西方字型中應顯示為分號和英鎊。我嘗試了超過 128 (= 0x80) 的字元選擇,結果相同。我測試過的不同調整:
- 將語言環境設置為 UTF-8 風格。
- 設置為 UTF-8 編碼(例如 en_US.UTF-8)。
- 啟動 xterm 時呼叫不同的字型,所有字型都有完整的 128-255 個字元集。
- 嘗試了uxterm和xterm。
- 除了簡單的echo -e測試之外,還使用了顯示完整字型網格或呼叫適當的 vt-100 esc 命令序列和字元串的測試程序。例如:
轉義(’<’ (將 DEC 補充字元集載入到 G1 中)
ctrl-N (移出,將 G1 載入到“左半”GL 集中)
\x32 \x33
在所有情況下,只有預設的“?” 顯示字形。
很多其他人寫過類似問題的論壇,並通過上述列表中的調整解決了。沒有一個對我有用。
我正在執行 32 位 kubuntu,而不是 64 位。這可能是問題的一個因素嗎?
我們有一個自定義程序,它使用 curses 工具呼叫基於 xterm 的編輯器,它至少顯示 128-255 範圍內的一個字元。該字元在 Sun Solaris 下執行良好,但在帶有 ncurses 的 kubuntu linux 中顯示為空白。恢復那個字形是讓我追逐這個目標的原因。
我將不勝感激任何幫助,並樂於提供任何和所有細節。
您的 shell 的語言環境設置是問題的一部分:
- 將語言環境設置為 UTF-8 風格。
- 設置為 UTF-8 編碼(例如 en_US.UTF-8)。
這告訴在xterm中執行的應用程序使用 UTF-8。UTF-8 編碼使用 0x80-0xff 範圍內的程式碼來建構多字節字元,這不是您想要的。
啟動xterm時生效的語言環境會影響它解釋相同程式碼的方式。如果該語言環境告訴 xterm 它使用 UTF-8,xterm 將使用 UTF-8 編碼(請參閱*語言環境資源),並且根據資源設置,可能不允許您將其關閉。(在桌面環境中執行 xterm 時,這尤其是一個問題,您的系統語言環境使用 UTF-8,例如,
en_US.UTF-8
*)。您可以使用控制滑鼠右鍵菜單查看 xterm 正在執行的操作:有一個條目*“UTF-8 編碼”,當它需要 UTF-8 時會被選中,而當您無法更改它時會灰顯。*如果您的 shell 初始化使用系統的語言環境設置,那麼從命令行執行此操作就足夠了:
LC_ALL=en_US LANG=en-US xterm
您似乎要問的是 ISO-8859-1 和相關編碼,而不是 UTF-8。這些是沒有後綴的語言環境名稱*
".UTF-8"
*通常指的。這是vttest的螢幕截圖,說明了 ISO-8859-1(對於您嘗試使用的應用程序,您可能希望看到的內容):
這就是 UTF-8 編碼所顯示的內容
ncurses 庫檢查語言環境(呼叫應用程序應該已初始化)並發現 0x80-0xff 中的那些單個字節不形成完整的多字節 UTF-8,並顯示空白。但是,如果您的區域設置(和終端)設置一致,您將看到預期的字元。
另一方面,您的問題提到了DEC Supplemental。這是不同的,因為它依賴於 xterm 的 Unicode 支持(使用National Replacement Character Sets中的所有可用字元)。Latin-1 以 1-1 映射到 Unicode,但DEC Supplemental(很像 Latin-1)不是。
NRCS(國家替換字元集)作為xterm中的一種模式提供。(原始硬體終端使用設置選擇)。如果您的應用程序實際上使用了DEC Supplemental(很像 Latin-1),您可能會看到類似這樣的內容(vttest 突出顯示它與 Latin-1 不匹配的地方):
或者它可能使用DEC 補充圖形(同樣,類似):
無論哪種方式,xterm 都可以做到這一點(啟用 UTF-8)。但是,對於 Ubuntu 分發的非常舊的版本,您可能必須編譯自己的程序。但在問題的上下文中,您似乎實際上使用的是 Latin-1 而不是這些較舊的預標準字元集。