我有一个 Java 项目Gradle。执行命令./gradlew build时,出现编译错误:
用于编码 Cp1251 的不可映射字符
工程中有西里尔文行,所有工程文件都设置了编码UTF-8,但还是报错。我添加了build.gradle以下几行:
compileJava {
options.encoding = 'UTF-8'
}
tasks.withType(Javadoc) {
options.encoding = 'UTF-8'
}
没有变化。唯一有帮助的是将某些西里尔文文件中的编码从 手动更改UTF-8为windows-1251,但这看起来不是一个干净的解决方案。作为一个工作系统,我使用 Windows 8.1。
我怎么解决这个问题?
22 年 5 月 25 日的更新:我尝试以application这种方式连接和使用插件:
plugins {
id "application"
}
applicationDefaultJvmArgs = ["-Dfile.encoding=UTF-8"]
但这也不会改变任何事情。在构建过程中,由于几行使用西里尔文的代码,错误再次发生。例如,这是错误之一:
error: unmappable character for encoding Cp1251
{"╨п╨╜╨▓", "╨д╨╡╨▓", "╨Ь╨░╤А", "╨Р╨┐╤А", "╨Ь╨░╨╣", "╨?╤О╨╜", "╨?╤О╨╗", "╨Р╨▓╨│", "╨б╨╡╨╜", "╨Ю╨║╤В", "╨Э╨╛╤П", "╨Ф╨╡╨║"};
而原始代码是:
{"Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"};
通过添加以下代码来解决编码错误
build.gradle:这是互联网上常见的解决方案,但在我的情况下不起作用。由于我有一个多模块项目,因此我将这些设置放在
build.gradle根目录的主要设置中。但是,子项目仍然发生编码错误。由于某种原因,父项目的设置没有被继承,所以有两个选项来解决这个问题:build.gradle为每个存在编码问题的模块添加设置。groovy插件以连接到build.gradle每个模块并为其添加设置。我选择了第二个选项,因为我已经有一个连接到项目的每个模块的自写插件。