webstorm控制台中文乱码的根本原因是jvm的file.encoding与终端环境编码不一致,必须同时配置三处:vmoptions文件、run configuration的vm options(-dfile.encoding=utf-8)、environment variables(file.encoding=utf-8),windows还需修改注册表autorun为chcp 65001,powershell用户额外需在$profile中设置输出编码。

WebStorm 控制台输出中文乱码,不是汉化包的问题,也不是编辑器编码设错了——根本原因是 JVM 启动时的 file.encoding 和终端底层环境没对齐,三处 JVM 相关配置缺一不可,少一个就照吐方块。
Run Configuration 里漏了 file.encoding=UTF-8
很多人只改了 vmoptions 文件,却忘了在运行配置里同步加参数。Node.js 或 Java 的每个 Run Configuration 都要单独设置,IDE 不会自动继承全局 JVM 参数。
- 打开
Run > Edit Configurations,选中你的脚本或服务 - 在
VM options输入框里填入:-Dfile.encoding=UTF-8(注意大小写,不能写utf8) - 在同一配置的
Environment variables区域,显式添加:file.encoding=UTF-8(IDEA 系列常漏这一项,尤其 Java 项目) - 如果用的是 Maven 或 Gradle 运行配置,还要检查
Runner标签页里的VM Options是否也填了
Windows 下 CMD 终端不认 JVM 参数,得靠注册表强制生效
GUI 启动的 WebStorm 不继承命令行环境变量,Terminal 底层调用的是 cmd.exe,它默认用 GBK(代码页 936),JVM 参数压不住这个底层逻辑。
- 运行
regedit,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor - 新建一个「字符串值」,名称为
Autorun(大小写敏感) - 值设为
chcp 65001(中间是空格,不是等号) - 改完必须彻底退出 WebStorm(包括系统托盘进程),再重新启动——否则注册表变更不加载
验证是否真生效,别信设置界面,要看运行时值
改完任意一处不重启,或者只改两处没改第三处,console.log("中文") 依然会输出问号。必须两个地方同时确认:
- 在 WebStorm Terminal 里执行:
java -XshowSettings:properties -version 2>&1 | grep file.encoding - 在 Java 代码里打印:
System.out.println(System.getProperty("file.encoding")); - 两个输出都必须是
UTF-8,且 Terminal 中能正常显示中文路径和ls结果,才算闭环成功
PowerShell 用户额外卡点:输出编码要手动覆盖
即使注册表和 JVM 都设对了,PowerShell(v1 或 v7)默认仍用 GBK 输出,Write-Output "中文" 还是乱码。
- 在 PowerShell 中执行
notepad $PROFILE(若不存在先运行New-Item -Path $PROFILE -Type File -Force) - 在文件末尾添加两行:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8和$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8' - 保存后只需重启 Terminal(不用重启 WebStorm),再测试输出
最容易被忽略的是:三处 JVM 编码——vmoptions 文件、Run Configuration 的 VM options、Run Configuration 的 Environment variables——必须全部设为 UTF-8,且任一改动后都得彻底重启 WebStorm;Windows 用户还得多走一步注册表,PowerShell 用户还得改 $PROFILE。少一个环节,控制台就还在吐方块。











