[Linux] 修改系统默认编码

locale 命令

  locale 命令用以设置程序运行的语言环境。

  locale 设置语言环境的命名规则为 Language_area.charset,例如 en_US.utf8 表示语言为英语,地区为美国,字符集为 UTF-8。

  查看当前字符映射文件

$ locale charmap
UTF-8

  查看可用公共语言环境

$ locale -a
C
C.UTF-
en_AG
...

  查看可用字符映射文件

$ locale -a
C
C.UTF-
en_AG
...

设置默认编码

  编辑 ~/.bashrc,设置默认编码为 UTF-8:

export LC_ALL=en_US.utf8
export LANG=$LC_ALL

  环境变量 LANG 是 LC_* 的默认值,如果没有设置 LC_*,则使用该值。

  LC_ALL 是一个宏,如果设置该值,则会覆盖除 LANG 以外所有的 LC_* 值。

什么是字符集

  字符集就是字符的集合,是字符在计算机系统内的编码方式,也是所谓的内码。所有字符集都存放在 /usr/share/i18n/charmaps 目录下,并且全部使用 Unicode 编号进行索引。Unicode 采用统一的编号来索引当前已知的全部符号(包括人类语言符号、特殊标记符号等)。

  字符集就是以上所有符号的编码方式,用于网络传输、计算机内部通信。Unicode 的编号通常使用 "U+" 后面跟着一个十六进制数字来表示,不同的编程语言可能有稍微不同前缀的写法,但十六进制数字保持不变。Unicode 统一使用四个字节来存储每个字符,但不同的符号对字节的消耗量不同,例如英语字符和数字等字符只需要单个字节就可以存储,而 GB2312 所包含的字符全部都是使用双字节存储。因为 Unicode 的目标是给世界上每一个字符都编上索引号并收纳进去,作为当前世界最大而全的字符集它不得不牺牲简洁性,它所包含的字符大部分都不能作为常用字符或者不是最被通用的字符,而作为计算机世界使用最多的字符 ASCII 单字节字符集,只能表达英语世界的字符,为此又有了 UTF-8 这种既简洁,字符覆盖率又高的字符集,UTF-8 使用单字节表示拉丁字母与数字,两个字节表示常用符号(包括常用中文字符),三个字节表示不常用字符,四个字节表示奇葩字符,UTF-8 理论上最长可以使用六个字节来为字符编码,但为了向 Unicode 看齐,实际上最长四个字节。

上一篇:DOM中offsetLeft与style.left的区别


下一篇:UML九种图-包图、类图