Linux 中的语言设置问题

语言问题是在Linux系统中经常遇到的问题,有的时候在使用数据库的时候,会出现编码不支持导致无法进行中文操作的情况。这篇文章是我在整理了一些Linux的编码相关的资料和查看了相关的博客以后,对Linux语言设置做的一个总结。

locale 查看当前系统编码设置情况

使用locale命令以后,我们可以看到当前语言环境的一些配置,出现字段的含义分别是:
1、 语言符号及其分类(LC_CTYPE)
2、 数字(LC_NUMERIC)
3、 比较和排序习惯(LC_COLLATE)
4、 时间显示格式(LC_TIME)
5、 货币单位(LC_MONETARY)
6、 信息主要是提示信息,错误信息, 状态信息, 标题, 标签, 按钮和菜单等(LC_MESSAGES)
7、 姓名书写方式(LC_NAME)
8、 地址书写方式(LC_ADDRESS)
9、 电话号码书写方式(LC_TELEPHONE)
10、度量衡表达方式(LC_MEASUREMENT)
11、默认纸张尺寸大小(LC_PAPER)
12、对locale自身包含信息的概述(LC_IDENTIFICATION)。

设定locale就是设定12大类的locale分类属性,即 12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG。
它们之间有一个优先级的关系:LCALL > LC\* > LANG
可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。

LANG和LANGUAGE的区别
LANGUAGE是设置应用程序的界面语言。而LANG是优先级很低的一个变量,它指定所有与locale有关的变量的默认值

安装相应的语言包

有些系统一开始是不带有中文的语言包的,需要自己进行安装。
在Ubuntu系统中,安装中文语言包:
sudo apt-get install language-pack-zh-hans
再使用locale -a 查看是否有zh_CN.*这样的语言环境

修改系统locale 设置

可以通过修改LCALL、LC\*、LANG这三种变量的值来更改使用的语言(修改前,必须确定已经安装好相应的语言包,通过 locale -a命令进行查看已经安装的语言包)

  1. 如果需要一个纯中文的系统的话,设定LC_ALL= zh_CN.XXXX,或者LANG=zh_CN.XXXX都可以
  2. 如果只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以

具体方法:
在系统中修改 /etc/default/local 中的LANG和LANGUAGE(如果需要修改其他语言设置变量的值,列出即可) 的设置以后进行重启即可