• 命令 locale -a

    查看系统支持的语系。如果需要显示中文,则必须要有zh_CN.utf8的语系。如果没有,则需要下载相应的语系(字符集)
    sudo apt-get update //ubuntu系统更新软件包列表
    sudo apt-get install -y language-pack-zh-hans
    sudo apt-get install -y language-pack-zh-hant

    • 命令locale

    查看当前语系

    • 关于永久生效设置

    修改文件(debian系列):/etc/default/locale (经过测试,docker的ubuntu系统这个设置没用,若要生效,需要在profile等地方显式export LANG=zh_CN.UTF-8)
    修改文件(redhat系列):/etc/sysconfig/i18n

    注意:zh_CN.UTF-8、zh_CN.UTF_8、zh_CN.utf8的区别,经过测试貌似没有区别,当然为了保证稳定,最好采用与locale -a 命令下显示的对应语系一致的写法。

    附:
    作者:穿越时空的眼泪
    链接:https://zhuanlan.zhihu.com/p/27477640
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    ocale是软件在运行时的语言环境, 它包括语言(Language), 地域 (Territory) 和字符集(Codeset)。
    一个locale的书写格式为: 语言[地域[.字符集]]。完全的locale表达方式是 [语言[地域][.字符集] [@修正值]。
    zhCN.GB2312 =中文中华人民共和国+国标2312字符集。

    [nick@ubuntu~]$ locale
    LANG=en_US.UTF-8
    LANGUAGE=”zh_CN:en”
    LC_CTYPE=”zh_CN.UTF-8”
    LC_NUMERIC=”zh_CN.UTF-8”
    LC_TIME=”zh_CN.UTF-8”
    LC_COLLATE=”zh_CN.UTF-8”
    LC_MONETARY=”zh_CN.UTF-8”
    LC_MESSAGES=”zh_CN.UTF-8”
    LC_PAPER=”zh_CN.UTF-8”
    LC_NAME=”zh_CN.UTF-8”
    LC_ADDRESS=”zh_CN.UTF-8”
    LC_TELEPHONE=”zh_CN.UTF-8”
    LC_MEASUREMENT=”zh_CN.UTF-8”
    LC_IDENTIFICATION=”zh_CN.UTF-8”
    # LC_ALL=zh_CN.UTF-8
    locale:
    locale把按照所涉及到的文化传统的各个方面分成12个大类,这12个大类分别是:
    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的设定:

    LCALL和LANG优先级的关系:LC_ALL > LC > LANG
    修改文件(debian系列):/etc/default/locale
    修改文件(redhat系列):/etc/sysconfig/i18n
    1、如果需要一个纯中文的系统的话,设定LCALL=zh_CN.XXXX,或者LANG=zh_CN.XXXX都可以。
    2、如果只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。
    3、假如什么也不做的话,也就是LC_ALL,LC
    和LANG均不指定特定值的话,系统将采用POSIX作为lcoale,也就是C locale。

    LANG和LANGUAGE的区别:
    LANG - Specifies the default locale for all unset locale variables
    LANGUAGE - Most programs use this for the language of its interface
    LANGUAGE是设置应用程序的界面语言。而LANG是优先级很低的一个变量,它指定所有与locale有关的变量的默认值

    总结一下:

    设定了LCALL就不用设置其他的了,他会强制覆盖掉LC.设置部分LC_和LANG的话,没有设置的LC_*采用的是LANG的值。
    1、临时设定编码:[nick@ubuntu~]$ export LC_ALL=”zh_CN.GBK”
    2、永久设定编码:修改文件/etc/profile(对所有用户有效)或者~/.bash_profile。在文件尾加入export LC_ALL=zh_CN.GBK
    转自:locale的设定中LANG、LC_ALL、LANGUAGE环境变量的区别 - 南山的鱼 - 博客频道 - CSDN.NET
    locale 详解 - 欢乐的程序员 - 博客园
    编辑于 2017-06-23