Linux

linux 核心實現的 tty 是否總是使用 UTF-8 呈現數據?

  • December 13, 2018

似乎是這樣。我讀過IUTF8,但文件只說它允許您在進行行編輯時將輸入作為 UTF-8 處理。

但是輸出呢?如果您使用 GUI 終端,它通常允許您更改編碼以在 pty 的輸出緩衝區中呈現字節,但是核心實現的 tty 呢?

Linux 是否總是使用 UTF-8 在 tty 的輸出緩衝區中呈現字節?

“Linux”本身並沒有這樣做。應用程序(包括但不限於終端仿真器)這樣做或不這樣做。

Linux 控制台終端是一個終端仿真器,它可能/可能不解釋 UTF-8。有關更多資訊,請參閱console_codes(4)手冊頁。那應該列出用於切換輸出字元集的控制項,例如,

  ESC %              Start sequence selecting character set                
  ESC % @               Select default (ISO 646 / ISO 8859-1)              
  ESC % G               Select UTF-8                                       
  ESC % 8               Select UTF-8 (obsolete) 

但是看到頁面上的最終評論對應於2006年的這個變化,懷疑轉換為web格式失去了一些文本。 另一個站點提供了更完整的表示(儘管該站點也存在此處提到的問題)。

如果您真的想閱讀手冊頁,您的本地電腦可能比任何一個都做得更好……

您可以分別使用以**@或結尾的序列來關閉/打開 UTF-8 模式。G**我偶爾使用這個腳本來做到這一點:

#!/bin/sh
# send character-string to enable UTF-8 mode
if test ".$1" = ".off" ; then
       printf '\033%%@'
else
       printf '\033%%G'
fi

(並且之前對此發表過評論,有人提醒說有一個腳本可以做到這一點,它比我的腳本要老一點)。

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