CentOS 设置Locale

CentOS 设置Locale

  • 登录OS后提示

    -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): 没有那个文件或目录

需要设置locale 文件的LC CTYPE

locale

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

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)。

因为LC_ALL设置了en_US.UTF-8 而且LC_CTYPE没有设置,所以CTYPE会默认继承ALL的设置
优先级的关系:
LC_ALL>LC_*>LANG
LC_ALL的值将覆盖所有其他的locale设定

  locale -a | grep zh 

这里的grep ,你上面的LC_ALL设置的是什么就设置什么
比如我的LC_ALL是en,这里我就查询grep en 得到如下结果

  locale: Cannot set LC_CTYPE to default locale: No such file or directory
  en_US
  en_US.iso88591
  en_US.iso885915
  en_US.utf8

编辑/etc/sysconfig/i18n

  vim /etc/sysconfig/i18n
  
  #添加一行
  LC_CTYPE="en_US.utf8"
  #这里的en_US.utf8取决于上一行命令取得的语言值
  
  source /etc/sysconfig/i18n
  

退出bash 重新登录,发现没有错误提示了

上一篇
下一篇