Centos终端输出时中文显示乱码
字符编码
字符编码是一种将字符映射到计算机可以理解的二进制数的系统,常见的字符编码有 UTF-8、GBK、ISO-8859-1等,不同字符编码使用不同的方式来表示,所以如果编码和解码不匹配,就会出现乱码问题。
中文乱码
对于linux服务器,以较常见的Centos为例,一般默认是不支持中文的,但有时程序的终端打印会包含中文,于是在显示上就会出现乱码,对于终端出现中文乱码情况,有以下几种常见的原因及应对方式。
1、未安装中文语言包
服务器系统支持中文的前提,是要先包含中文语言包,所以当出现中文乱码,可以先检查系统是否安装了中文语言包。
检查是否安装中文语言包
locale -a | grep "zh_CN"
安装中文语言包
sudo yum groupinstall "fonts"
这里通过 groupinstall 可以额一次性安装和字体相关的包组。
2、系统语言设置有误
即服务器系统语言未设置为支持中文,这个问题可以通过修改 /etc/locale.conf
来设置。
检查系统编码
echo $LANG
执行以上检查命令,如果结果显示不包含 zh_CN.UTF-8,则表示文件系统编码有误。
修改系统编码
手动修改
# 使用编辑器如 vi、nano 等打开 /etc/locale.conf,将 LANG 参数值修改为 zh_CN.UTF-8
LANG="zh_CN.UTF-8"
命令行修改
sed -i '/^LANG/s/LANG=.*/LANG="zh_CN.UTF-8"/' /etc/locale.conf
重新加载配置
source /etc/locale.conf
3、终端字符集设置有误
即第三方的远程连接客户终端,如常用的ssh客户端等,如果正确设置了系统编码后发现还是有中文乱码,那大概率就是连接终端的字符集没设置为 UTF-8。
如果是这种情况,则需要手动修改实际使用的连接终端配置,将字符集改为UTF-8相关配置项即可。
4、文件系统编码问题
如果文件名或文件内容是在不同编码环境下创建的,也可能会导致中文乱码,例如从Linux到Windows进行跨平台文件操作,如果碰到这种情况,也可以使用 iconv 来转换文件的字符编码,示例如下
# 将原始编码为GBK的文件input.txt,转换为UTF-8编码,并以 output.txt 输出
iconv -f GBK -t UTF-8 input.txt -o output.txt
5、应用程序字符配置问题
不同的应用程序和环境可能默认使用不同的字符编码,如果应用程序处理的文本包含中文字符,而字符编码配置不正确或不一致,就会导致乱码,例如 Java 就需要在代码中指定字符编码。
本文作者:505donkey
本文链接:https://www.cnblogs.com/505donkey/p/18276864
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话