webstorm 控制台中文乱码的根本原因是jvm启动参数、终端环境和运行配置三者编码未对齐;必须在bin/webstorm64.vmoptions中添加-dfile.encoding=utf-8,run configuration中同步设置vm选项和环境变量file.encoding=utf-8,并为windows终端配置注册表autorun执行chcp 65001,且每次修改后需彻底重启webstorm。

WebStorm 控制台输出中文乱码,不是汉化问题,也不是编辑器编码设错了——它只和 JVM 启动参数、系统终端环境、运行配置三者是否对齐有关。改错一处,console.log("中文") 就继续吐方块。
为什么 System.out.println("中文") 或 console.log("中文") 仍是问号?
根本原因:Java/Node.js 进程启动时,JVM 没拿到 UTF-8 编码指令,或终端底层(如 Windows 的 cmd.exe)仍用 GBK 解码字节流。WebStorm 的 Editor → File Encodings 设置对控制台输出完全无效。
- 汉化包只改菜单和对话框文字,不影响任何控制台输出
-
file.encoding参数没传给 JVM,JVM 就 fallback 到系统默认编码(Windows 是 GBK,Linux/macOS 可能是 en_US.ISO-8859-1) - 即使 JVM 设了 UTF-8,终端进程(cmd/powershell/zsh)自己不用 UTF-8,照样显示为 □ 或 ?
bin/webstorm64.vmoptions 必须加 -Dfile.encoding=UTF-8
这是 JVM 全局启动参数,影响 WebStorm 自身插件、内置 Terminal 启动的子进程,以及所有未显式覆盖该参数的 Run Configuration。
- 路径:Windows/macOS 是
bin/webstorm64.vmoptions,Linux 是bin/webstorm.vmoptions - 在文件末尾新增一行:
-Dfile.encoding=UTF-8(注意大小写,不能写utf8或UTF8) - 改完必须彻底退出 WebStorm(包括托盘进程),否则不生效
Run Configuration 里要同步设三处 UTF-8
仅改 vmoptions 不够——你跑的每个 Node.js / Java 脚本都可能被单独配置,漏掉任一环节,输出就断链。
- 打开
Run > Edit Configurations,选中你的配置 - 在
VM options输入框填:-Dfile.encoding=UTF-8 - 在
Environment variables区域,显式添加:file.encoding=UTF-8(IDEA 系列常漏这一项) - 如果用的是 PowerShell(v1 或 v7),还需在
$PROFILE末尾加两行:[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
Windows 用户绕不开注册表 Autorun
GUI 启动的 WebStorm 不继承命令行环境变量,Terminal 底层调用的是 cmd.exe,它默认用代码页 936(GBK)。光靠 JVM 参数压不住它。
- 运行
regedit,定位到:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor - 新建一个「字符串值」,名称为
Autorun(大小写敏感) - 值设为:
chcp 65001(中间是空格,不是等号) - 改完必须彻底退出 WebStorm 并重启,否则注册表变更不加载
最容易被忽略的是:三处 file.encoding=UTF-8(vmoptions、Run Configuration VM options、Run Configuration 环境变量)缺一不可,且任意一处修改后都必须彻底重启 WebStorm;验证时别只看设置界面,要在 Terminal 里执行 java -XshowSettings:properties -version 2>&1 | grep file.encoding,并确认输出是 file.encoding = UTF-8。











