WebStorm保存文件编码取决于读取时认定的编码与Project Encoding设置,需统一Global、Project及properties文件编码为UTF-8,并启用Transparent native-to-ascii conversion,重启IDE生效。

WebStorm 保存文件时用什么编码,不取决于你“点保存”那一刻的操作,而取决于它读取时认定的编码 + Project Encoding 设置。直接改保存行为没用,得先对齐三层编码策略。
Global 和 Project Encoding 必须同时设为 UTF-8
只改 Project Encoding 是最常见错误。WebStorm 新建文件的保存编码由 Project Encoding 决定,但读取已有文件时会 fallback 到 Global Encoding——两者不一致,新建文件是 UTF-8,老文件一打开就乱码,改完再保存又变回原编码。
- 打开
Settings / Preferences → Editor → File Encodings - 把
Global Encoding和Project Encoding都设成UTF-8 - 确认
Default encoding for properties files也是UTF-8(否则msg=你好会自动转成msg=\u4f60\u597d) - 务必勾选
Transparent native-to-ascii conversion(这是 .properties 文件中文不被转义的开关) - 点 OK 后完全退出 WebStorm 再重启——部分设置热加载不可靠
单个文件乱码?别瞎猜编码,先看状态栏再选 Reload 或 Convert
打开一个显示方块或问号的文件,右下角状态栏会显示 WebStorm 当前识别的编码(比如 GBK、ISO-8859-1)。点击它弹出列表,直接敲 utf 或 gbk 快速定位:
- 选中带 ⚠️ 的编码(如
GBK)时,会弹窗问你选Reload还是Convert -
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 系列常漏这一层
BOM 或 <meta charset="gbk"> 会覆盖所有设置
WebStorm 优先按文件自身声明决定编码,BOM 或 HTML 中的 <meta charset="gbk"> 会直接覆盖 Global/Project Encoding:
- 有 BOM 的 UTF-8 文件,状态栏会直接显示
UTF-8,哪怕你设了全局GBK也没用 - HTML 文件写了
<meta charset="gbk">,WebStorm 就强制用GBK解析,即使文件实际是 UTF-8 - 遇到这种冲突,要么删掉
meta声明,要么手动点击状态栏选UTF-8→Convert(前提是内容真是 UTF-8)
最容易被忽略的是:Convert 操作必须指定正确的源编码,且不能递归进 node_modules/;还有就是 Terminal 的 chcp 65001 和 VM 参数 -Dfile.encoding=UTF-8 缺一不可——编辑器里看着再正常,控制台一输出中文就崩,基本卡在这儿。


















