
使用 GBK 解决IntelliJ IDEA 控制台中文乱码问题1. 问题背景操作系统WindowsIDEIntelliJ IDEA 2022.1.2JDKJDK 22现象Java 源代码中的中文显示正常但运行程序后IDEA 的控制台中的中文显示为乱码。-已检查的设置Settings → Editor → File Encodings中的 GlobalEncoding、Project Encoding 和 Properties 文件编码均已设置为UTF-8。2. 尝试过但未解决的方法2.1 检查文件编码路径File → Settings → Editor → File Encodings确认以下设置都为UTF-8Global EncodingProject EncodingDefault encoding for properties files原因这些设置主要用于控制文件的读写编码不保证 Java 进程输出与 IDEA 控制台的编码处理方式一定一致。2.2 给 Java 运行配置添加 UTF-8 参数按照之前教程在Run → Edit Configurations...中选择 Java 程序在VM options中添加了-Dfile.encodingUTF-8但是在本次环境中这样做还是没有解决控制台乱码的问题真是没招了……3. 最终解决方法将 Java 默认字符集设置为 GBK在Run → Edit Configurations...中选择需要运行的 Java 程序在VM options中设置-Dfile.encodingGBK保存配置停止正在运行的程序再重新运行。本次环境中改为 GBK 后控制台中文恢复正常。说明这表明 GBK 与当前运行环境的控制台编码处理方式更匹配。它不意味着GBK 在所有电脑上都比 UTF-8 更合适其他环境应根据实际输出判断。设置模板为了避免每创建一个运行配置都手动填写参数可以修改 Application 运行配置模板。打开Run → Edit Configurations...。点击左下角的Edit configuration templates...。在左侧选择Application模板。如果没有VM options点击Modify options添加VM options。在VM options中填写-Dfile.encodingGBK点击Apply/OK保存。需要注意该模板通常用于给以后新建的 Application 运行配置提供默认参数。已经存在的运行配置不一定会自动更新。如果旧配置仍乱码需要在对应配置的VM options中补上参数。这不需要修改每个.java源文件也不需要在 Java代码中添加额外语句。如何验证可以运行以下测试代码importjava.nio.charset.Charset;publicclassceshi{publicstaticvoidmain(String[]args){System.out.println(中文测试你好世界);System.out.println(默认编码Charset.defaultCharset());System.out.println(文件编码System.getProperty(file.encoding));}}设置-Dfile.encodingGBK后默认编码相关输出应显示为 GBK中文测试文本应在控制台正常显示。原理简述Java 程序输出文本时需要把字符转换为字节控制台再按相应的字符集解释这些字节。如果输出端和接收端使用的编码不一致就可能出现乱码。File Encodings主要管理 IDEA 对源文件等文件的编码处理。-Dfile.encoding...用于设置 Java 进程的默认字符集。本次环境中使用-Dfile.encodingGBK后Java 输出与当前控制台环境更匹配因此乱码消失。注意file.encoding也可能影响依赖默认字符集的文件读写操作。项目涉及 UTF-8 文件、网络数据或跨平台协作时应明确指定相应字符集长期使用时也可以进一步排查 IDEA 版本、运行环境与控制台编码之间的兼容问题。结论本次问题不是通过反复修改源文件编码解决的而是在 Java 运行配置中把-Dfile.encodingUTF-8改为-Dfile.encodingGBK随后通过修改Application运行配置模板让新建的 Java 运行配置默认带上该参数减少重复操作。