Character-Encoding

Linux 上哪些終端編碼是預設的,哪些是最常見的?

  • July 21, 2020

我需要決定我正在處理的複雜商業程序是否應該採用特定的 Linux 終端編碼,或者從終端讀取它(如果是,如何)。

很容易猜出 Windows 上最常見的系統和終端編碼。我們可以假設大多數使用者通過控制面板配置這些,例如,他們的終端編碼,通常是非 Unicode,可以很容易地從該語言/國家的標準配置中預測出來。(例如,在美國英語機器上,它將是 OEM-437,而在俄語機器上,它將是 OEM-866。)

但我不清楚大多數使用者如何在 Linux 上配置他們的系統和終端編碼。經常需要使用非 ASCII 字元的精明人士可能會使用 UTF-8 編碼。但是有多少比例的 Linux 使用者屬於這一類呢?

也不清楚大多數使用者使用哪種方法來配置他們的語言環境:更改 LANG 環境變數或其他方式。

一個相關的問題是 Linux 預設如何配置這些。我自己的 Linux 機器(實際上是通過我的 Windows 機器上的 VMWare Player 執行的虛擬 Debian 5 機器)預設設置為使用 US-ASCII 終端編碼。但是,我不確定這是由我工作場所的管理員設置的,還是開箱即用的設置。

請理解,我不是在尋找“您個人使用哪種編碼?”的答案。而是一些我可以找出Linux使用者可能使用的編碼分佈的方法。

在VT52等控制台中使用的最古老的字元編碼是ASCII

這一基本決定已延續多年。大多數控制台使用 ASCII 作為 ANSI 定義的最基本字元集。下一組編碼(在西方)是 ISO-8859 集(從 1 到 15)。每種語言(語言組)一個。最常見的是 ISO-8859-1(英語),另一個則與所使用的相應語言成比例。

然後,最通用的世界字元列表是 Unicode,在 Linux 中,它通常以 UTF-8 編碼。

這是 Linux 中當今終端和程序最常見的編碼。


從更一般到特定設置:

自 Etch on (13 年前)以來, debian中的預設值一直是 utf-8。Apr 8th 2007

注意:全新 Debian/Etch 安裝預設啟用 UTF8。

並在發行說明中確認:

新 Debian GNU/Linux 安裝的預設編碼是 UTF-8。許多應用程序也將預設設置為使用 UTF-8。

這意味著 Debian(以及 Ubuntu、Mint 和許多其他)預設支持 utf- 8

當地的

使用者使用命令實際選擇的編碼(和國家)dpkg-reconfigure locales留給使用者偏好。

locale為電腦命令配置實際的特定設置。

所有“環境變數”對 POSIX 規範定義的LC_*每個國家/語言部分(部分)都有特定的影響。

tty

但以上只是“一般”設置。一個特定的終端可能(或可能不)匹配它。好吧,總的來說,當今大多數終端的常用編碼是 utf8。

如果設置為 utf8,則可以找到特定終端 (tty) 的編碼:

$ stty -a | grep -o '.iutf8'
iutf8

也就是說,-在列印結果之前沒有。

終端

但是terminaltty 終端(通常)在其中執行的(GUI 視窗)也有自己的語言環境設置。如果設置正常,可能:

$ locale charmap
UTF-8

會有正確答案的。

但這只是對 linux/unix 的所有 i18n 設置的快速而淺顯的了解。

帶走:可能,假設 Linux 使用 utf8 是你最好的選擇。

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