gpt4 book ai didi

encoding - Gradle 对属性文件使用错误的编码 (Latin-1)

转载 作者:行者123 更新时间:2023-12-02 21:43:03 26 4
gpt4 key购买 nike

我尝试从带有变音符号的文件中读取属性,这是我的 build.gradle:

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,latin-1 中的 c3 是 à,b6 是 ¶,但这不是我所期望的。

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

更多信息:

如果我在 gradle 中打印出 propFiles 内容:

println propFile.text

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

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

使用 -Dfile.encoding=UTF-8:gradle utf8test -Dfile.encoding=UTF-8 执行 gradle 没有帮助,export GRADLE_OPTS="-Dfile.encoding= 也没有帮助bash 中的 UTF-8",也不会将 systemProp.file.encoding=utf-8 添加到 gradle.properties。

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

到目前为止非常感谢!

最佳答案

这是预期的,与 gradle 没有太大关系。 documentation of java.util.Properties (与Gradle无关,是JDK的标准类)明确指定properties文件的标准编码为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
}
}

关于encoding - Gradle 对属性文件使用错误的编码 (Latin-1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30956495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com