You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle构建Java项目遇Cp1252编码无法映射字符问题求解决方案

解决Gradle构建时的Cp1252编码乱码问题

这个问题我之前帮不少开发者处理过,本质就是编码不匹配搞出来的锅:你的Java文件用的是UTF-8编码(里面的弯引号是UTF-8支持的特殊字符),但Gradle默认用了Windows系统的Cp1252编码读取文件,Cp1252不认识这些特殊字符,就抛出了“unmappable character”错误。

下面给你几个靠谱的解决办法,按优先级排序:

方法1:在Gradle构建脚本中强制指定UTF-8编码(推荐)

这是最直接且持久的方案,修改项目的build.gradle(多模块项目可以改根目录的build.gradle,或者对应模块下的配置文件),添加编译时的编码配置:

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

如果是Gradle 7.x及以上版本,也可以用更简洁的写法:

java {
    compileOptions.encoding = 'UTF-8'
    // 可选:指定你的Java版本,比如Java 17
    toolchain.languageVersion = JavaLanguageVersion.of(17)
}

添加完之后重新执行gradle build,Gradle就会用UTF-8编码读取和编译Java文件,乱码问题直接解决。

方法2:设置系统环境变量全局生效

如果不想每个项目都改Gradle脚本,可以给Java工具设置全局编码规则:

  • Windows系统:按Win+R输入sysdm.cpl,切换到「高级」标签页点击「环境变量」
  • 新建系统变量:
    • 变量名:JAVA_TOOL_OPTIONS
    • 变量值:-Dfile.encoding=UTF-8
  • 保存后重启命令行或IDE,再执行gradle build

这个方法会让所有Java相关工具(包括Gradle、javac、java命令)默认使用UTF-8编码,属于一劳永逸的方案。

方法3:临时修复注释内容(治标不治本)

如果只是想快速过构建流程,也可以直接修改报错的注释行:把里面的弯引号「“”」换成普通的直引号「""」,比如把原注释改成:

for example, a network code of "NH" may appear on a "National Highway" or "New Hampshire"

不过这个方法只能解决当前文件的问题,后续如果还有其他带特殊字符的注释,还是会触发报错,只推荐临时应急使用。


内容的提问来源于stack exchange,提问作者Mandroid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:28:42