GoLand 控制台中文乱码的根源是JVM参数与编辑器编码未统一为UTF-8:需同步设置File Encodings全为UTF-8,并在VM Options中添加-Dfile.encoding=UTF-8,且必须重启生效;Windows下还需确保CMD(chcp 65001)或PowerShell($OutputEncoding = [System.Text.Encoding]::UTF8)终端编码一致。

GoLand 控制台输出中文乱码的根源
根本不是 Go 语言或 fmt.Println 有问题,而是 GoLand 的 JVM 启动参数和编辑器内部编码设置没对齐。它默认用系统 locale(Windows 上常为 GBK)解码 Go 程序输出的 UTF-8 字节流,结果就是 ‰∏ñÁïå 这类典型乱码。关键点在于:GoLand 是 Java 应用,它的终端模拟器、文件读写、JVM 字符集三者必须统一为 UTF-8。
必须改的两个地方:FileEncodings + VM Options
只调一个地方基本无效。常见错误是只改了编辑器显示编码,却忘了 JVM 运行时也得认 UTF-8。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 在
File → Settings → Editor → File Encodings中,把Global Encoding、Project Encoding、Default encoding for properties files全部设为UTF-8 - 打开
Help → Edit Custom VM Options,在文件末尾追加一行:-Dfile.encoding=UTF-8 - 重启 GoLand —— 不重启不生效,因为 JVM 参数只在启动时加载
Windows 下额外要检查 chcp 和 PowerShell 输出
即使 GoLand 设置正确,如果它底层调用的是 CMD 或 PowerShell,而终端自身不支持 UTF-8 解码,照样乱码。
- 在 CMD 中运行
chcp,确认输出是Active code page: 65001;如果不是,先执行chcp 65001 - PowerShell 用户必须手动设置:
$OutputEncoding = [System.Text.Encoding]::UTF8,否则 GoLand 调用 PowerShell 执行go run时仍会按系统默认编码解码 - 更稳妥的做法:在 GoLand 的
Settings → Tools → Terminal中,把 shell path 改成cmd.exe /k chcp 65001,强制每次开终端都切编码
已存在乱码文件怎么救?别信 BOM
Go 源文件带 BOM(ef bb bf)会导致编译警告甚至某些工具解析失败,但 GoLand 乱码跟 BOM 关系不大。真正要查的是已有 .go 文件是否真存成了 UTF-8。
- 用命令行查:
file -i main.go或xxd main.go | head -1,看是否含ef bb bf - 若含 BOM,用
sed -i '1s/^\xef\xbb\xbf//' main.go去掉(Linux/macOS);Windows 下用 VS Code 右下角编码切换 → “Save with Encoding → UTF-8” - 别在记事本里保存 .go 文件——它默认“ANSI”就是 GBK,字符串字面量从源头就坏了
$OutputEncoding 没设。这两处一漏,前面所有设置都白搭。

















