GoLand控制台中文乱码的根本原因是JVM未指定-Dfile.encoding=UTF-8参数,导致用系统默认编码(如GBK)解码UTF-8字节流;需修改goland64.exe.vmoptions(Windows)或idea.vmoptions(macOS/Linux)并完全重启IDE生效。

GoLand 控制台输出中文乱码,本质是 JVM 启动参数未强制指定文件编码,导致 GoLand 自身(基于 IntelliJ 平台)用系统默认编码(如 Windows 的 GBK)解码 UTF-8 字节流。它和你的 Go 程序是否用 UTF-8 无关,而是 IDE 控制台渲染层的解码逻辑出了问题。
File Encodings 设置只是表面,不解决控制台输出
很多人先去 File → Settings → Editor → File Encodings 把「Global Encoding」和「Project Encoding」全设成 UTF-8,但发现 go run 输出还是乱码——这是因为该设置只影响 GoLand 打开/保存源文件时的读写行为,**不影响 JVM 启动后控制台(Console)对 stdout 字节流的解码方式**。
- GoLand 控制台底层由 JVM 渲染,其字符解码依赖
-Dfile.encoding参数 - 即使源文件是 UTF-8、
fmt.Println("你好")输出的是合法 UTF-8 字节,IDE 若用 GBK 解,照样显示为 - 该设置对终端(Terminal)工具栏里的 Shell 是无效的,那是独立进程
必须在 VM Options 中添加 -Dfile.encoding=UTF-8
真正起效的位置是 GoLand 的 JVM 启动参数。你得手动编辑它的 .vmoptions 文件:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 路径分两种:
— Windows:打开%GoLand_Home%\bin\goland64.exe.vmoptions或goland.exe.vmoptions
— macOS/Linux:打开$HOME/Library/Caches/JetBrains/GoLand<version>/idea.vmoptions</version>或安装目录下的bin/idea.vmoptions - 在文件末尾新增一行:
-Dfile.encoding=UTF-8 - 保存后**必须完全退出 GoLand(包括托盘进程),再重新启动**,否则不生效
- 验证方式:启动后打开
Help → Diagnostic Tools → Debug Log Settings,搜索file.encoding,能看到日志中打印出file.encoding = UTF-8
如果用了 Run Configuration,还需检查 Go Toolchain 编码
某些旧版 GoLand 在「Run → Edit Configurations → Defaults → Go Build」里会有一个 Environment variables 区域,这里可能被误加了 GODEBUG=madvdontneed=1 之类干扰项,但更关键的是:确保没有覆盖 GO111MODULE 或 GOPATH 导致 go toolchain 被降级调用,否则即使 VM 参数正确,go 命令本身也可能因环境异常绕过标准输出流处理。
- 进
Run → Edit Configurations → Defaults → Go Run,确认Environment variables为空或仅含必要变量 - 取消勾选
Use the default GOPATH(如果项目用了 Go Modules) - 避免在配置里手动设置
chcp 65001类命令——这是 CMD 层面的事,对 GoLand 控制台无效
最常被忽略的一点:改完 .vmoptions 不重启 IDE,或者改了错误的文件(比如只改了 idea.vmoptions 却没改 goland64.exe.vmoptions)。只要 JVM 进程没用上 -Dfile.encoding=UTF-8,控制台就永远在用系统默认编码解码你的 UTF-8 输出。

















