当前位置: 首页 > 知识库问答 >
问题:

Gradle对属性文件使用了错误的编码(拉丁文-1)

郑狐若
2023-03-14

我尝试用umlauts从文件中读取属性,这是我的构建。格雷德尔:

task utf8test << {

    Properties props = new Properties()
    def propFile = new File("my.property")
    if (propFile.canRead()) {
        props.load(new FileInputStream(propFile))
        for (Map.Entry property in props) {
                println property.value
        }
    }
}

我的属性文件看起来像(UTF-8编码):

challenge: ö

如果我用:gradle utf8test执行任务,结果如下

:utf8test
ö

BUILD SUCCESSFUL

Total time: 0.877 secs

"ö"改为 "ö", 这很容易理解。"ö"因为十六进制是c3b6,拉丁语-1中的c3是,b6是,但这不是我所期望的。

问题:我如何配置gradle以读取UTF-8编码的属性

更多信息:

如果我在gradle中打印propFiles内容,请使用:

println propFile.text

我收到“ö”作为输出,因此文件被正确读入,输出被我的shell正确编码。

Gradle-daemon运行:-Dfile.encoding=UTF-8

使用-Dfile.encoding=UTF-8执行gradle:gradle utf8test-Dfile.encoding=UTF-8没有帮助,也没有在bash中导出GRADLE_OPTS="-Dfile.encoding=UTF-8",也没有添加system Prop.file.encoding=utf-8到gradle.properties.

我在gradle中找不到Properties类的文档页面,是否有配置编码的选项?

到目前为止,非常感谢!

共有1个答案

岳永思
2023-03-14

这是意料之中的事,与格拉德尔没有太大关系。java的文档。util。Properties(与Gradle无关,但它是JDK的标准类)明确指定属性文件的标准编码为ISO-8859-1。如果您是唯一一个读取该文件的人,并且希望它包含UTF-8,那么请明确地将其读取为UTF-8:

Properties props = new Properties()
def propFile = new File("my.property")
if (propFile.canRead()) {
    props.load(new InputStreamReader(new FileInputStream(propFile), StandardCharsets.UTF_8));
    for (Map.Entry property in props) {
            println property.value
    }
}
 类似资料:
  • 嗨,我试图用gradle设置我的intelliJ。 IntelliJ创建并使用项目。中的iml。idea \模块目录。 当我将gradle与idea插件一起使用时,它会生成一个项目。项目根目录中的iml。如何说服gradle插件使用正确的iml文件? 我使用Gradle 3.5和IntelliJ 2017.1.4

  • 我已经建立了一个管道,在microsoft azure管道中运行我的测试。在我的本地机器上,这工作正常,文件位于我的计算机上的gradle系统目录中: 这是我的: 据我所知,由jetifier从文件。 输出: 下面是我组装调试和测试单元测试的azure-pipelines.yml的一部分: 我在这篇文章、这篇文章和这篇文章中尝试了解决方案,但没有结果。jar文件大4mb,是代码存储库中唯一的文件,

  • 如何在Gradle中包含属性文件? 例如,在Ant中,我可以执行以下操作:

  • 问题内容: 我为该标题表示歉意。我找不到更好的方法来解释这种情况。 我使用URL http://www.exampledepot.com/egs/java.util/Props.html中所述的Property类加载属性文件。 我的问题是我可以在该属性文件中使用属性吗? 例: test.properties 其他语法有可能吗? 谢谢 问题答案: 以前从未见过。您当然 可以 制作自己的预处理器。只要

  • 我有一个编码问题。 我有数百万个文本文件需要为语言数据科学项目进行解析。每个文本文件都编码为UTF-8,但我刚刚发现其中一些源文件的编码不正确。 例如我有一个中文文本文件,编码为UTF-8,但文件中的文本如下所示: 当我使用Python检测此中文文本文件的编码时: Chardet告诉我文件编码为UTF-8: UnicodeDammit还告诉我该文件编码为UTF-8: 同时,我知道这不是UTF-8,

  • 我正在使用谷歌日历python api(https://developers.google.com/google-apps/calendar/quickstart/python#step_3_set_up_the_sample)的示例脚本来尝试打印所有日历事件。然而,我得到一个错误: 排队 我在文档中找不到这样一个错误的参考文献。以前有人遇到过这个吗? 干杯,杰克