在 Gradle 中正确显示 UTF-8 文本
Posted
技术标签:
【中文标题】在 Gradle 中正确显示 UTF-8 文本【英文标题】:Show UTF-8 text properly in Gradle 【发布时间】:2014-02-11 14:01:41 【问题描述】:我有一个任务:
task info<<
println "Gradle — система автоматической сборки, построенная на принципах Apache Ant и Apache Maven, но предоставляющая DSL на языке Groovy вместо традиционной XML-образной формы представления конфигурации проекта."
当我使用命令时:
gradle info -Dfile.encoding=UTF-8
文本显示不正确。如何解决?谢谢。
【问题讨论】:
【参考方案1】:我在build.gradle
中使用下一个设置,它对我来说很好:
compileJava.options.encoding = 'UTF-8'
tasks.withType(JavaCompile)
options.encoding = 'UTF-8'
【讨论】:
我相信遍历所有 JavaCompile 任务也会设置 compileJava 任务的编码。因此,您不需要 sn-p 中的第一行。 不适合我,我想这不是编码集的最后一个,我想这已经被覆盖了 Intellij 设置,编译器选项对我不起作用,这个起作用了。【参考方案2】:file.encoding
系统属性需要在执行 Gradle 构建(例如 Gradle 守护程序)的 JVM 启动时正确设置。实现此目的的一种方法是使用export GRADLE_OPTS="-Dfile.encoding=utf-8"
。另一种可行的方法是将systemProp.file.encoding=utf-8
添加到gradle.properties
。当然,这假设构建脚本文件实际上使用的是 utf-8 编码。要查看您的平台(以及 Gradle 的)默认编码是什么,请在构建脚本中打印出系统属性的值。
【讨论】:
我的系统文件.encoding=Cp1251。因此,如果我在我的机器上将其更改为 UTF-8,这是否能解决我的一般问题? 重要的是Java平台编码。 我不知道您所说的“Gradle 任务信息拾取 JAVA_TOOL_OPTIONS”是什么意思。尝试设置GRADLE_OPTS
(在 Windows 上,您可能需要在此之后打开一个新的命令提示符),确保停止守护程序一次(gradle --stop
),然后编辑文件以强制重新编译。如果这没有帮助,很可能是您的文件不是 utf-8。
将systemProp.file.encoding=utf-8
添加到gradle.properties
不起作用。 GRADLE_OPTS
工作。
我遇到了类似的问题,并一直在尝试使用此处给出的建议来解决(在 Windows 上运行)。我已经验证我的 file.encoding 设置为 utf-8 ('println System.getProperty("file.encoding")),但仍然无法正确输出特殊字符。有什么建议?谢谢。【参考方案3】:
在 gradle.properties 中
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
【讨论】:
【参考方案4】:如果您使用的是 kotlin DSL,那么:
build.gradle.kts:
tasks.withType<JavaCompile>
options.encoding = "UTF-8"
【讨论】:
【参考方案5】:我只在 build.gradle 中使用它:
apply plugin: 'java'
tasks.withType(JavaCompile)
options.encoding = 'UTF-8'
repositories
mavenCentral()
....
test
systemProperty "file.encoding", "utf-8"
【讨论】:
【参考方案6】:可能的解决方案是将 gradle build 调用包装到 sh 脚本中,并在此脚本中导出编码设置: buildScript.sh:
export GRADLE_OPTS="-Dfile.encoding=utf-8"
gradlew clean build ...
附:此解决方案已成功检查并提供
【讨论】:
以上是关于在 Gradle 中正确显示 UTF-8 文本的主要内容,如果未能解决你的问题,请参考以下文章