温馨提示×

centos golang日志乱码怎么办

小樊
33
2026-10-03 03:46:23
栏目: 编程语言

在 CentOS 上运行 Golang 程序出现日志乱码,通常是字符编码不一致导致的(如终端是 GBK,程序输出 UTF-8,或反过来)。下面按常见原因一步步排查和解决。


一、先确认乱码场景

  1. 只在终端(SSH / 控制台)看乱码?
  2. 日志文件里也是乱码?
  3. 是中文乱码,还是全部乱码?

二、最常见原因:终端编码问题(90% 情况)

1. 查看当前系统编码

locale

正常应看到:

LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8

如果是:

LANG=zh_CN.GBK

就容易乱码。

2. 设置为 UTF-8(推荐)

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

永久生效:

echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
source ~/.bashrc

三、确认 CentOS 是否支持 UTF-8

locale -a | grep UTF-8

如果没有,安装:

yum install -y glibc-locale-source
localedef -i en_US -f UTF-8 en_US.UTF-8

四、Golang 程序本身与编码无关(重点)

✅ Go 默认使用 UTF-8 编码

所以:

  • 源码文件必须是 UTF-8
  • 日志输出也是 UTF-8

检查源码编码

file main.go

如果不是 UTF-8:

iconv -f GBK -t UTF-8 main.go -o main_utf8.go

五、日志文件乱码怎么办?

1. 用 UTF-8 方式查看

cat log.txt
less log.txt

如果还是乱码:

file log.txt

2. 转换日志编码

iconv -f GBK -t UTF-8 log.txt > log_utf8.txt

六、Windows 上传到 CentOS 导致的乱码

如果你在 Windows 写代码 → 上传 CentOS:

  • 用 VS Code 打开
  • 右下角编码改成 UTF-8
  • 重新保存上传

七、如果必须输出 GBK(少见)

import "golang.org/x/text/encoding/simplifiedchinese"

encoder := simplifiedchinese.GBK.NewEncoder()
data, _ := encoder.String("中文日志")
fmt.Println(data)

八、快速排查清单 ✅

  • [ ] locale 是 UTF-8
  • [ ] SSH 客户端编码是 UTF-8(Xshell / PuTTY / Terminal)
  • [ ] Go 源码是 UTF-8
  • [ ] 日志文件是 UTF-8
  • [ ] 没有手动转 GBK

如果你愿意,可以把:

  • 乱码截图
  • locale 输出
  • 日志写入代码

发出来,我可以精准定位是哪一步出的问题。

0 踩