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 用户可能使用的编码分布。
在像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)
也就是说,-
在打印结果之前没有。
但是terminal
tty 终端(通常)在其中运行的(GUI 窗口)也有自己的语言环境设置。如果设置正常,可能:
$ locale charmap
UTF-8
Run Code Online (Sandbox Code Playgroud)
会有正确答案。
但这只是对 linux/unix 的所有 i18n 设置的快速且非常浅显的了解。
带走:可能,假设 Linux 使用 utf8 是你最好的选择。