webstorm中文乱码需同步设置global、project及properties三层编码为utf-8并勾选transparent native-to-ascii conversion;乱码文件通过状态栏reload预览或convert修正;终端乱码须同步配置系统shell、jvm参数(vmoptions与run configuration)及环境变量;project栏显示“口口口”属ui字体问题,需手动指定中文字体并重启。

WebStorm 中文乱码不是“没设编码”,而是三层编码策略没对齐——IDE 层、项目层、文件层各自按不同规则猜,结果一碰中文就崩。必须同步改对三个地方,缺一不可。
Editor → File Encodings 里三个 UTF-8 必须同时设对
很多人只改 Project Encoding,漏掉另外两个关键项,新建文件还是 GBK。
-
Global Encoding:控制所有新项目、新建文件的默认读取方式 -
Project Encoding:决定当前项目下新建文件的保存编码(也参与读取) -
Default encoding for properties files:专管.properties文件,不设这个,msg=你好就会自动变成msg=\u4f60\u597d
三者都必须设为 UTF-8,并勾选 Transparent native-to-ascii conversion(这是 .properties 文件中文不被转义的开关)。改完点 OK 后建议完全退出 WebStorm 再重启,部分设置热加载不可靠。
已存在乱码文件别硬改,先看右下角状态栏再操作
打开一个显示为方块或问号的文件,右下角会显示当前识别的编码(如 GBK 或 ISO-8859-1)。点击它弹出列表,可直接敲 utf 或 gbk 快速定位:
- Reload:只让编辑器按新编码重新解析内容,磁盘文件一字不动——适合安全预览,确认是否真能正确解码
- Convert:把文件内容按新编码重写进磁盘——必须确认原始内容确实是那个编码,否则中文变问号或方块
一旦执行过 Convert,WebStorm 就会把这个文件和该编码绑定,下次打开不再瞎猜。
Terminal / Run Configuration 输出还是乱码?JVM 和系统层要同步动
编辑器里全设成 UTF-8,不代表终端输出就正常。Terminal 输出走的是系统 Shell + JVM 启动参数 + WebStorm 终端渲染三层逻辑,缺一不可:
- Windows:注册表路径
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor新建字符串值Autorun,值为chcp 65001 - macOS/Linux:编辑
bin/webstorm.sh,在#!/bin/sh下第一行紧贴插入:export LANG=zh_CN.UTF-8和export LC_ALL=zh_CN.UTF-8 - 所有平台:编辑
webstorm64.vmoptions(Windows/macOS)或webstorm.vmoptions(Linux),追加一行:-Dfile.encoding=UTF-8 - Run Configuration → Environment Variables 里也必须显式设置
file.encoding=UTF-8——IDEA 系列常漏这一层
改完必须彻底退出 WebStorm(包括托盘进程),再重启,否则变量不加载。
Project 工具窗口(左边栏)显示口口口?那是 UI 字体问题
Project 栏显示乱码和文件内容编码无关,它只依赖 UI 字体 + 文件系统返回的原始字节流。常见原因是系统缺中文字体:
- 进
File → Settings → Appearance & Behavior → Appearance(macOS 是WebStorm → Preferences → Appearance) - 勾选
Override default fonts by (not recommended) - 在
Name下拉框里选支持中文的字体,比如Microsoft YaHei(Windows)、WenQuanYi Micro Hei Mono(Linux)、PingFang SC(macOS) - 点 OK 后必须重启 WebStorm 才生效——热重载不刷新 UI 字体栈
如果 Project 栏里连新建的 测试.js 都显示为 .js,那 99% 是字体问题,别去动 Settings → Editor → File Encodings 里的设置。
最易被忽略的是:三处 JVM 编码(vmoptions、Run Configuration 的 VM options、Environment variables)必须全部设对且一致;而 Project 栏乱码和 Terminal 乱码根本是两套机制,混在一起调只会越调越乱。











