在 Debian 上使用 Go 打印日志出现乱码,通常不是 Go 本身的问题,而是字符编码 / 区域设置(locale)或终端编码不一致导致的。下面按常见原因逐个说明。
Debian 默认可能使用:
LANG=C
LC_ALL=C
此时:
locale
如果看到:
LANG=C
LC_CTYPE=C
就很可能是原因。
sudo dpkg-reconfigure locales
# 至少选 en_US.UTF-8 或 zh_CN.UTF-8
~/.bashrc 或 /etc/environment)export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
source ~/.bashrc
即使系统是 UTF-8,如果你的:
不是 UTF-8,也会乱码。
echo $LANG
Go 的 fmt.Println / log 默认输出 UTF-8 字节流:
log.Println("中文日志")
✅ 这是对的
❌ 不需要转 GBK
如果你在 Windows 控制台看,才会乱码。
如果:
cat 或编辑器打开乱码检查文件编码:
file log.txt
如果是 UTF-8,问题在查看工具。
容器里默认可能:
LANG=C
解决:
ENV LANG=C.UTF-8
systemd 默认环境可能不含 UTF-8:
[Service]
Environment=LANG=en_US.UTF-8
locale 是 UTF-8locale 输出我可以更精确地帮你定位。