根本原因是WebStorm默认按Java规范用ISO-8859-1解析.properties文件,必须同时将Default encoding for properties files设为UTF-8并勾选Transparent native-to-ascii conversion,否则中文自动转义为\u4f60\u597d且不可逆。

为什么.properties文件里的中文总变成\u4f60\u597d
根本原因不是没设UTF-8,而是WebStorm默认用ISO-8859-1读取.properties文件,且不提示——哪怕你全局和项目编码都设成了UTF-8,它照样按Java规范硬套ISO-8859-1解析。
必须同步做两件事:
-
Default encoding for properties files明确设为UTF-8(不是“跟项目一致”,要手动选) - 勾选
Transparent native-to-ascii conversion(这是开关,不勾等于白设)
漏掉任意一项,msg=你好 就会自动转成 msg=\u4f60\u597d,保存后内容不可逆。
改完设置后,已有.properties文件还是乱码怎么办
别直接点Convert,先看右下角状态栏显示的当前编码。如果显示的是ISO-8859-1或GBK,说明WebStorm正按错误编码在读。
点击状态栏编码名 → 搜索utf → 选中带⚠️的UTF-8 → 弹窗里选Reload:
-
Reload只是让编辑器用UTF-8重新解析现有字节流,安全可逆 - 如果显示正常了,再右键该文件 →
File Encoding→Convert to UTF-8(这时才真正重写磁盘) - 如果Reload后仍是方块,说明原始文件根本不是UTF-8,得先确认源编码(比如原是GBK就选GBK Reload预览)
Transparent native-to-ascii conversion到底起什么作用
它控制WebStorm是否在保存时自动把非ASCII字符转义成\uXXXX格式。Java运行时只认这种格式的.properties,但开发时你肯定想直写中文。
勾选后:
- 编辑时显示原文:如
title=首页 - 保存时自动转义:磁盘里存的是
title=\u9996\u9875 - 运行时Java正确加载,IDE也正常显示
不勾选,要么编辑时看到一堆\u,要么保存后Java读不出中文——二者必居其一。
终端运行Java时.properties中文仍乱码,是不是IDE没配好
不是。IDE编码设置只管编辑器内显示和文件保存,和JVM读取无关。终端输出乱码是JVM自己用系统默认编码(如Windows的GBK)去读.properties导致的。
必须额外配置三处:
- WebStorm的
Run Configuration→Environment Variables里加:file.encoding=UTF-8 - 编辑
bin/webstorm64.vmoptions(macOS/Linux是webstorm.vmoptions),追加:-Dfile.encoding=UTF-8 - Windows用户还需在注册表
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor下新增字符串Autorun,值为chcp 65001
这三处缺一不可;只调IDE编码,System.out.println(bundle.getString("title"))照样打问号。


















