IntelliJ IDEA 默认编码需统一设为 UTF-8:全局与项目编码均设 UTF-8,勾选 Transparent native-to-ascii conversion,编译参数加 -encoding utf8;Java 源文件须存为 UTF-8 without BOM;Spring Boot 控制台乱码需改终端编码或配置 logging.charset;properties 文件加载须显式指定 UTF-8 编码。

IDEA 默认编码不是 UTF-8 怎么改
IntelliJ IDEA 启动时默认用系统编码(Windows 常为 GBK),新建 Java 文件或读取资源时若含中文,极易出现乱码或编译报错 illegal character: \uFFFD。
必须统一设为 UTF-8,且需同时配置三处:
- 【File Encoding】→
Global Encoding和Project Encoding都选UTF-8 - 【File Encoding】→ 勾选
Transparent native-to-ascii conversion(否则.properties文件里的中文会被自动转成\u4f60\u597d) - 【Build → Compiler → Java Compiler】→
Target bytecode version旁的Additional command line parameters加上-encoding utf8(避免 javac 编译时误用平台默认编码)
Java 源文件编译时报错 “未结束的字符串字面量”
这通常不是语法错误,而是源文件实际保存为 GBK,但 javac 按 UTF-8 解析导致字节截断。比如中文“你好”在 GBK 中占 4 字节,在 UTF-8 中占 6 字节,解析错位后引号无法配对。
验证方法:
file -i YourClass.java查看实际编码;修复方法:
立即学习“Java免费学习笔记(深入)”;
- 用编辑器另存为
UTF-8 without BOM(注意:带 BOM 的 UTF-8 在 Java 编译中不被识别,会把\uFEFF当作非法字符) - 命令行强制指定编码编译:
javac -encoding UTF-8 YourClass.java
- 若用 Maven,确保
pom.xml中有:UTF-8
Spring Boot 控制台输出中文是乱码(Windows CMD)
根本原因是 Windows CMD 默认使用 GBK,而 Spring Boot 日志(尤其是 logback 或 slf4j)按 UTF-8 输出,终端无法正确解码。
临时解决(开发阶段):
- 启动 CMD 后先执行:
chcp 65001
(切换到 UTF-8 code page) - 在 IDEA 的
Run Configuration → Environment variables中添加:JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
长期建议:改用支持 UTF-8 的终端(如 Windows Terminal),或在 application.properties 中显式配置日志编码:
logging.pattern.console=%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%npattern 并确保 logback-spring.xml 中 指定:UTF-8
读取 classpath 下的 properties 文件中文乱码
ResourceBundle.getBundle() 和 Properties.load(InputStream) 默认都用 ISO-8859-1 解码,即使文件本身是 UTF-8 也会出错。
正确做法分场景:
- 用
Properties.load(Reader)替代load(InputStream),并传入InputStreamReader指定编码:try (InputStream is = clazz.getResourceAsStream("/config.properties"); Reader reader = new InputStreamReader(is, StandardCharsets.UTF_8)) { props.load(reader); } - Spring 环境下优先用
@PropertySource(encoding = "UTF-8")注解加载 - 避免直接用
ResourceBundle,它不支持编码参数;改用java.util.Properties手动控制流
真正麻烦的是遗留项目里大量 .properties 已被保存为 GBK —— 此时不能简单改 IDE 编码,得先批量转码,再统一调整加载逻辑。










