关键在于显式指定javac解析源文件的编码:命令行必须加-encoding UTF-8,Maven需在pom.xml中配置project.build.sourceEncoding,Gradle设compileJava.encoding,IDE还需同步设置项目与文件物理编码为UTF-8。

Java 编译器编码设置的关键,是让 javac 正确“读懂”你的源文件——它不关心你存的是什么编码,只按你指定的或默认的编码去解析字节。如果没明确告诉它,它就用操作系统默认编码(Windows 常为 GBK),而你的文件却是 UTF-8,乱码和 unmappable character 错误就必然出现。
命令行编译:必须加 -encoding 参数
这是最直接、最不可绕过的方式。无论源文件是什么编码,都得显式声明:
-
javac -encoding UTF-8 Main.java→ 指定源文件为 UTF-8 -
javac -encoding GBK LegacyService.java→ 遗留项目用 GBK 时也得写明 - 不加
-encoding就等于依赖系统默认,跨环境极易失败
Maven 项目:在 pom.xml 中配置插件
Maven 默认不传 -encoding,必须主动配置 maven-compiler-plugin:
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
- 在
<properties></properties>中统一声明:UTF-8 - 或在插件配置中显式指定:
UTF-8 - 注意:
<encoding></encoding>只影响src/main/java;资源文件(如.properties)需额外配maven-resources-plugin
Gradle 项目:设置 compileJava.encoding
在 build.gradle 中添加:
compileJava.options.encoding = "UTF-8"- 若用 Kotlin 或其他 JVM 语言,也要同步设置对应编译任务的 encoding
- 推荐在
allprojects或subprojects块中统一配置,避免模块间不一致
IDE 内置编译器:配合文件编码设置才生效
IntelliJ IDEA 和 Eclipse 的“内置编译器”通常会读取项目文件编码设置,但有前提:
- IDEA:必须在 Settings → Editor → File Encodings 中把 Project Encoding 设为 UTF-8,且右下角状态栏确认当前文件是 UTF-8(不是 “GBK (autodetected)”)
- Eclipse:需右键项目 → Properties → Resource → Text file encoding 设为 UTF-8,并勾选 “Override encoding from Workspace”
- 仅改 IDE 显示编码不够——如果物理文件本身是 GBK,即使 IDE 强制显示为 UTF-8,编译器读入时仍会出错
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










