linux locale字符集设置,Linux下通过locale来设置字符集

本文详细介绍了在Linux系统下如何通过locale设置不同的语言环境,包括locale的命名规则、各LC_环境变量的含义和作用,以及如何在CentOS和Debian中配置locale。此外,还提到了在Shell和Vim中支持中文显示和输入的配置方法,强调了LANG和LC_ALL等环境变量的重要性。
摘要由CSDN通过智能技术生成

Linux下通过locale来设置字符集

eb372727e941498890f523f1eb47abd3.gif2013-10-06 22:28:25

d2f4211e5248275b449e13ab6e6e3e53.gif阿炯

在Linux中通过locale指令来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为_.,如zh_CN.UTF-8,zh代表中文,CN代表大陆地区,UTF-8表示字符集。在locale环境中,有一组变量,代表国际化环境中的不同设置,内容如下:

各个LC_环境变量含义

优先级:LC_ALL > LC_* >LANG

名称     含义

LC_CTYPE:语言符号及其分类

LC_NUMERIC:数字

LC_COLLATE:比较和排序习惯

LC_TIME:时间显示格式

LC_MONETARY:货币单位

LC_MESSAGES:信息主要是提示信息,错误信息,状态信息,标题,标签,按钮和菜单等

LC_NAME:姓名书写方式

LC_ADDRESS:地址书写方式

LC_TELEPHONE:电话号码书写方式

LC_MEASUREMENT:度量衡表达方式

LC_PAPER:默认纸张尺寸大小

LC_IDENTIFICATION:对locale自身包含信息的概述

下面展开详述:

1、LC_COLLATE

定义该环境的排序和比较规则

2、LC_CTYPE

用于字符分类和字符串处理,控制所有字符的处理方式,包括字符编码,字符是单字节还是多字节,如何打印等。是最重要的一个环境变量。

3、LC_MONETARY

货币格式

4、LC_NUMERIC

非货币的数字显示格式

5、LC_TIME

时间和日期格式

6、LC_MESSAGES

提示信息的语言。另外还有一个LANGUAGE参数,它与LC_MESSAGES相似,但如果该参数一旦设置,则LC_MESSAGES参数就会失效。LANGUAGE参数可同时设置多种语言信息,如

LANGUANE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”。

7、LANG

LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用该值。类似于 LC_ALL。

8、LC_ALL

它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响,通常情况下,它是值为空。

下面是所有的相关的locale标识的原义:

LANG Determines the default locale in the absence of other locale related environment variables

LANGUAGE

LC_ADDRESS Convention used for formatting of street or postal addresses

LC_ALL High precedence override for locale specific behaviour (overrides all other locale variables)

LC_COLLATE Collation order

LC_CTYPE Character classification and case conversion

LC_MONETARY Monetary formatting

LC_MEASUREMENT Default measurement system used within the region

LC_MESSAGES Format of interactive words and responses

LC_NUMERIC Numeric formatting

LC_PAPER Default paper size for region

LC_RESPONSE Determines how responses (such as Yes and No) appear in the local language

LC_TELEPHONE Conventions used for representation of telephone numbers

LC_TIME Date and time formats

如果这个变量没有被设置,则会使用默认locale。Linux下一般为"POSIX",而BSD系统下多为"C"。"C"是系统默认的locale,"POSIX"多为"C"的别名,所以当我们新安装完一个系统时,默认的locale就是C或POSIX。

临时修改当前终端为locale为gbk的中文编码:

export export LC_ALL=zh_CN.GBK

当然是否能正常显示或处理中文还与连接的终端工具的会话设置有关。

在CentOS中配置locales的方法:

安装中文支持包:yum groupinstall chinese-support

修改字符编码配置,没有这个文件(/etc/sysconfig/i18n)就创建它:

LANG="zh_CN.GBK"

SUPPORTED=zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"

SYSFONT="latarcyrheb-sun16"

i18n文件是用来设置系统语言,比如:zh_CN.UTF-8、zh_CN.GBk、zh_TW.Big5、en_US.UTF-8等。

i18n中三个环境变量:

LANG变量,设置系统语言。

SUPPORTED变量决定系统支持的语言,即系统能够显示的语言。

SYSFONT变量表示系统字体。

配置完成后重启服务器后可完成。

在Debian中安装locales的方法:

通过'apt-get install locales'命令安装locales包,如果还是没有(通过locales -a查看)或显示不完全,就需要安装(新版本中)'locales-all'包。

安装完成locales包后,系统会自动进行locale配置,你只要选择所需的locale,可以多选,最后指定一个系统默认的locale。这样系统就会帮你自动生成相应的locale和配置好系统的locale。

增加或修改新的locale也很简单,用dpkp-reconfigure locales重置locale即可。

· 我们也可手动增加locale,只要把新的locale增加到/etc/locale.gen文件中,再运行locale-gen命令即可生成新的 locale;再通过设置上面介绍的LC_*变量就可设置系统的locale了。下面是一个locale.gen文件的样例:

zh_CN.GBK GBK

zh_CN.UTF-8 UTF-8

要在Shell中正常显示系统的中文提示信息和支持中文输入,LANG和shell的编码配置需一致,并安装有中文locale。如:LANG和 shell的编码都配置成zh_CN.utf8,并安装有zh_CN.utf8这个locale。如果shell和LANG配置不同,则中文显示乱码;如果LANG里设置的locale没有安装,则不能显示系统的中文提示信息,只会显示英文提示信息。

如果仅修改某用户的locale,只需要在其主目录下的bash配置文件中export对应的字符环境。如修改'.profile',在尾部加入:

export LC_ALL="zh_CN.gbk"

重新登录或新开终端即可修改当前的字符环境,如果想修改系统全局的locale,则需要修改全局配置文件(/etc/profile),方法如上。同样想修改全局的字符编码可以修改:/etc/default/locale这个文件中所定义的字符集,它由update-locale指令所生成。

vim显示中文

安装中文包后还要编辑vim的配置文件( /etc/vimrc),在最后加入以下内容:

set fileencoding=utf-8

set fileencodings=utf-8,gb18030,gbk,big5

参考链接:https://wiki.debian.org/Locale

该文章最后由 阿炯 于 2019-12-01 10:19:43 更新,目前是第 2 版。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值