阿里云 ECS Centos7 echo 中文可以正常显示, 编辑文件中文就是乱码, 怎么解决

问题描述

发现自己ECS环境, linux中文无法正常显示, 也安装了中文语言包!

问题出现的平台版本及自己尝试过哪些方法

系统版本号
➜  ~ cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
系统语言包
➜  ~ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
...
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
zh_SG
zh_SG.gb2312
zh_SG.gbk
zh_SG.utf8
zh_TW
zh_TW.big5
zh_TW.euctw
zh_TW.utf8
zu_ZA
zu_ZA.iso88591
zu_ZA.utf8

可以看到系统是已经安装过语言包的, 并且在 /etc/locale.conf 文件中添加了相应配置, 如下:

➜  ~ cat /etc/locale.conf
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"

相关代码

使用Mac通过ssh工具连接到远程ECS服务器, 在命令行中输入中文可能正常显示
➜  ~ echo "旅途中的牧马人"
旅途中的牧马人

shell正常

但是如果将中文输出到文件后或在文件中直接编辑输入中文就会显示乱码
➜  ~ echo "旅途中的牧马人" > test.txt
➜  ~ vim test.txt

中文乱码

你期待的结果是什么?实际看到的错误信息又是什么?

老铁们有没有遇到过这样问题的, 怎么处理?

阅读 5.4k
3 个回答

我看不到你vimrc文件的内容,但我猜有可能是这的问题
你试一下

vim /etc/vimrc

添加

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

LANGUAGE变量不对

echo输出的只是你当前shell窗口的编码集并不是linux系统的编码,你需要修改linux的内核系统编码,操作如下:

方式一

修改系统本地环境文件

vi /etc/locale.conf

如果显示

LANG="C"

那么将“C”修改为zh_CN.UTF-8

可能会显示其他,只要不是zh_CN.UTF-8的话,就将原字符修改为zh_CN.UTF-8即可

重新加载配置

source /etc/locale.conf

重新登录shell链接对应服务器

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏