在 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 文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 phpMyAdmin 中显示 UTF-8 字符?

Spring不在UTF-8上显示希伯来语[重复]

IntelliJ IDEA中Gradle构建javaProject生成的Jar界面字母出现乱码怎么办?

C语言读取UTF-8文本

PHP:为啥我不能正确查看文本?

phpMyAdmin 不会在数据库中正确显示 Unicode(utf-8)字符,但在网络中正确显示 [重复]