Windows系统下设置Java默认编码为UTF-8无效的问题
Java默认编码修改为UTF-8的有效解决方法
一、修复java -Dfile.encoding=UTF8的执行错误
你输入的命令缺少主类名,正确格式应为:
java -Dfile.encoding=UTF-8 你的主类名
注意:参数取值用标准写法UTF-8(带横杠),而非UTF8,避免部分场景下的兼容问题。
二、让JAVA_TOOL_OPTIONS设置生效的关键
在Windows命令提示符或VS Code终端执行set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8后,必须关闭当前终端,重新打开新终端再运行程序,环境变量才会生效。
若要实现永久生效,可通过系统环境变量设置:
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「用户变量」或「系统变量」中新建变量:
- 变量名:
JAVA_TOOL_OPTIONS - 变量值:
-Dfile.encoding=UTF-8
- 变量名:
- 保存后重启所有终端和VS Code,设置将全局生效。
三、验证编码生效的正确方式
不要仅依赖java -version的输出,需在代码中直接验证:
import java.nio.charset.Charset; public class TestEncoding { public static void main(String[] args) { System.out.println("默认编码:" + Charset.defaultCharset()); System.out.println("file.encoding参数值:" + System.getProperty("file.encoding")); } }
编译运行后,若两项输出均为UTF-8,则设置成功。
四、VS Code调试时的额外配置
如果通过VS Code的「运行和调试」启动程序,需在launch.json中添加VM参数:
{ "configurations": [ { "type": "java", "name": "TestEncoding", "request": "launch", "mainClass": "TestEncoding", "vmArgs": "-Dfile.encoding=UTF-8" } ] }
这样每次调试运行都会自动应用编码设置。
内容的提问来源于stack exchange,提问作者404-No Social Skills Found
相关产品推荐
相关产品推荐

