字符集错误解决

1错误描述与表现

错误描述与表现:
登录服务器发现如下报错

-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory

2错误排查过程

  • 以为是系统字符集的问题,于是打印系统的$LANG,发现并没有异常
#查看系统字符集的几种方式
echo $LANG
env |grep LANG
export |grep LANG
locale|grep LANG
  • 继续执行locale命令,这时报错,错误内容如下
[admin@hehe ~]$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=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=

这里发现LC_CTYPE=UTF-8,通过

locale -a|grep UTF-8

并没有找到该字符集,猜想是什么原因导致了LC_CTYPE的的修改


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设定的优先级
设定locale就是设定12大类的locale分类属性,即12个LC_。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG
它们之间有一个优先级的关系:LC_ALL > LC_
>LANG。可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。
你什么也不做的话,也就是LC_ALL,LANG和LC_*均不指定特定值的话,系统将采用POSIX作为lcoale,也就是C locale
参考链接
---

3错误解决

将错误的locale设置好,增加以下设置即可.
参考链接

cat /etc/environment
LANG=en_US.utf8
LC_CTYPE=en_US.utf8
cat /etc/locale.conf
LANG=en_US.UTF8

4故障反思,是什么原因导致的LC_CTYPE改变,进而引发错误呢?

想了下,有两种可能:

  1. 现在都是普通用户,不是root用户,切换回root用户是不存在这个问题的.
  2. 我通过ansible批量分发过文件,这些出现问题的主机都是这些ansible的远程主机,是否和ansible有关系?

转载于:https://www.cnblogs.com/johnsonjie/p/10520579.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值