哪些终端编码在 Linux 上是默认的,哪些是最常见的?

Ala*_*lan 7 character-encoding

我需要决定一个复杂的商业程序是否应该为 Linux 假设一个特定的终端编码,或者从终端读取它(如果是,如何读取)。

很容易猜测哪些系统和终端编码在 Windows 上最常见。我们可以假设大多数用户通过控制面板配置这些,例如,他们的终端编码(通常是非 Unicode)可以很容易地从该语言/国家/地区的标准配置中预测出来。(例如,在美国英语机器上,它将是 OEM-437,而在俄罗斯机器上,它将是 OEM-866。)

但我不清楚大多数用户如何在 Linux 上配置他们的系统和终端编码。经常需要使用非 ASCII 字符的精明者可能会使用 UTF-8 编码。但是有多少 Linux 用户属于该类别?

也不清楚大多数用户使用哪种方法来配置他们的语言环境:更改 LANG 环境变量,或其他什么。

一个相关的问题是 Linux 默认如何配置这些。我自己在工作的 Linux 机器(实际上是一台虚拟 Debian 5 机器,它通过我的 Windows 机器上的 VMWare Player 运行)默认设置为使用 US-ASCII 终端编码。但是,我不确定这是由我工作场所的管理员设置的,还是开箱即用的设置。

请理解,我不是在寻找“您个人使用哪种编码?”的答案。而是通过某种方式我可以找出 Linux 用户可能使用的编码分布。

ImH*_*ere 6

在像VT52这样的控制台中使用的最古老的字符编码是ASCII

这个基本决定已经延续了很多年。大多数控制台使用 ASCII 作为 ANSI 定义的最基本字符集。下一组编码(在西方)是 ISO-8859 组(从 1 到 15)。一种语言(语言组)。最常见的是ISO-8859-1(英文),其他则按比例使用相应的语言。

然后,最通用的世界字符列表是 Unicode,在 Linux 中,它通常以 UTF-8 编码。

它是当今 Linux 中最常见的终端和程序的编码。


从更一般的设置到特定的设置:

操作系统

自 Etch on Apr 8th 2007(13 年前)以来debian 中的默认值一直是 utf-8。

注意:新的 Debian/Etch 安装默认启用 UTF8。

并在发行说明中确认:

新 Debian GNU/Linux 安装的默认编码是 UTF-8。许多应用程序也将默认设置为使用 UTF-8。

这是什么意思是说Debian(和Ubuntu,薄荷,和其他许多)是UTF-8能够在默认情况下。

语言环境

用户使用命令实际选择哪种编码(和国家/地区)取决于dpkg-reconfigure locales用户偏好。

为计算机locale命令配置实际的特定设置。

所有LC_*“环境变量”对 POSIX 规范定义的每个国家/语言部分(部分)都有特定影响。

打字机

但以上只是“一般”设置。一个特定的终端可能(也可能不)匹配它。嗯,总的来说,今天大多数终端的常用编码是 utf8。

如果设置为 utf8,则可以找到特定终端 (tty) 的编码:

$ stty -a | grep -o '.iutf8'
 iutf8
Run Code Online (Sandbox Code Playgroud)

也就是说,-在打印结果之前没有。

终端

但是terminaltty 终端(通常)在其中运行的(GUI 窗口)也有自己的语言环境设置。如果设置正常,可能:

$ locale charmap
UTF-8
Run Code Online (Sandbox Code Playgroud)

会有正确答案。

但这只是对 linux/unix 的所有 i18n 设置的快速且非常浅显的了解。

带走:可能,假设 Linux 使用 utf8 是你最好的选择。