Linux系统localeUTF-8报错
locale (UTF-8): 没有那个文件或目录
SSH登陆linux服务器,显示
warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): 没有那个文件或目录
警告: setlocale: LC_CTYPE: 无法改变区域选项 (UTF-8)(warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory)。
setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8) ,
[root@uatblockchain04 ~]# locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
原因分析:
根据上面登录警告提示可知,系统已经设置了默认地区_语言.字符集为en_US.UTF-8
,但是在系统中没有定义对应的locale文件
,
所以只需要手动生成这个locale文件
即可!
解决办法
注意
:这种方法针对的是Centos7
,不适用
于Centos6
# 查看系统当前语言
echo $LANG
# 查看locale库是否存在
ll /usr/lib/locale/locale-archive
# 删除locale库再重建一下,前提是你的文件系统中要有相应的数据文件。
rm -f /usr/lib/locale/locale-archive
# 重新生成中文的locate文件
## 配置哪个语言就生成哪个语言文件
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
https://stackoverflow.com/questions/58304278/how-to-fix-character-map-file-utf-8-not-found
# 安装语言包(非必需)
## 安装中文命令行支持--找不到包
yum install -y glibc-minimal-langpack glibc-locale-source
yum install -y glibc-langpack-zh
# 安装gui中文支持
yum install -y langpacks-zh_CN
# 安装英文语言包
dnf install -y glibc-minimal-langpack glibc-locale-source glibc-langpack-en
# 重新安装glibc-common包(解决glibc不兼容的问题)
yum -y reinstall glibc-common
永久修改locale的LANG
注意
: LANG=zh_CN.UTF8(没有-
)
# 一定要需要修改locale.conf中的LC_ALL
vim /etc/locale.conf
#添加内容
LC_ALL=zh_CN.UTF-8
# vim保存退出
:wq
# 使用localectl永久修改locale的LANG
## 相当于在/etc/locale.conf中添加LANG=zh_CN.UTF8
localectl set-locale LANG=zh_CN.UTF8
# 使配置生效
source /etc/locale.conf
结果验证
重新登陆ssh后告警消除
Centos6服务器locale告警(-bash: warning: setlocale:)的处理方法
ssh登陆Centos6服务器locale告警(-bash: warning: setlocale:):
-bash: warning: setlocale: LC_CTYPE: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_COLLATE: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_MESSAGES: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_NUMERIC: cannot change locale (en_US.UTF-8): No such file or directory
-bash: warning: setlocale: LC_TIME: cannot change locale (en_US.UTF-8): No such file or directory
解决办法
以下方法仅适用于Centos6
.
# 安装依赖的语言包
yum install -y glibc-common kde-l10n-Chinese
#编辑/etc/sysconfig/i18n
[root@centos6-vm01 ~]# vim /etc/sysconfig/i18n
#添加以下内容
LANG="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
SYSFONT="latarcyrheb-sun16"
#第一行解决了乱码问题
#第二行解决了"LC_ALL: cannot change locale (en_US.UTF-8)"的问题。
# 查看是否添加语言成功
cat /etc/sysconfig/i18n
# 使配置生效
source /etc/sysconfig/i18n
# 删除locale库再重建一下,前提是你的文件系统中要有相应的数据文件。
rm -f /usr/lib/locale/locale-archive
# 生成 en_US.UTF-8这个字符集的locale文件
## 配置的哪个语言就生成哪个语言文件
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8