goland控制台中文乱码根源是jvm未指定utf-8编码,需同步设置file encodings全为utf-8、在custom vm options中添加-dfile.encoding=utf-8并重启ide,否则windows下仍按gbk解码utf-8输出。

GoLand控制台中文乱码的根源在哪
根本原因不是代码或终端本身,而是 JVM 启动参数未指定字符集,导致 GoLand 底层控制台(基于 IntelliJ 平台)用系统默认编码(Windows 通常是 GBK)解码 UTF-8 输出的 Go 程序日志。哪怕 fmt.Println("你好") 正确执行,控制台也显示为“浣犲ソ”这类乱码。
必须改的两个地方:FileEncodings 和 VM Options
只改一处大概率无效,必须同步调整:
- 在
File → Settings → Editor → File Encodings中,把 Global Encoding、Project Encoding、Default encoding for properties files 全部设为UTF-8;勾选Transparent native-to-ascii conversion(对 .properties 文件有用,不影响 Go) - 打开
Help → Edit Custom VM Options…,在弹出文件末尾追加一行:-Dfile.encoding=UTF-8;如果提示文件不存在,就点 “Create” 让 GoLand 自动生成 - 改完后必须重启 GoLand——不重启,VM 参数不会生效
Windows 下额外注意:控制台宿主进程的编码继承问题
即使上述配置全对,部分 Windows 版本(尤其是 22H2+)仍可能因终端宿主(如 Windows Terminal 或旧版 conhost.exe)未正确继承 JVM 编码而残留乱码。此时需确认:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 运行 Go 程序时,GoLand 底部
Run工具窗口左上角显示的是go run还是cmd.exe/PowerShell?如果是后者,说明 GoLand 被配置为“使用外部终端”,此时乱码由系统终端决定,应改为默认内置终端(Settings → Tools → Terminal → Shell path留空即可) - 若坚持用外部终端,请确保其自身编码为 UTF-8:PowerShell 执行
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8,或在 Windows Terminal 设置中启用"utf8": true
验证是否真正生效
别只看 fmt.Println("中文"),要测真实场景:
- 新建
main.go,写入:fmt.Println("✅ 控制台", "路径:D:\项目\test.go", "错误:invalid character ','") - 运行后,检查所有中文、中文标点(如顿号、全角逗号)、路径中的中文是否完整可读
- 如果路径显示为
D:项目 est.go正常,但错误信息里“,”变成“ÔÚ”之类,说明 VM Options 没生效或未重启
最易被忽略的是:改了 VM Options 却没重启 IDE,或者误改了 goland64.exe.vmoptions 但实际启动的是 goland.exe(32 位残留),务必统一从 Edit Custom VM Options 入口修改。










