Gradle 对 属性 文件使用了错误的编码 (Latin-1)
Gradle uses wrong encoding (Latin-1) for property file
我尝试从带有变音符号的文件中读取属性,这是我的 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 没有帮助,bash 中的 export GRADLE_OPTS="-Dfile.encoding=UTF-8"
也没有帮助,添加 systemProp.file.encoding=utf-8
到 gradle.properties.
我在 gradle 中找不到 Properties-Class 的文档页面,是否有配置编码的选项?
到目前为止非常感谢!
这是预料之中的,与 gradle 没有太大关系。 documentation of java.util.Properties(与Gradle无关,是JDK的标准class)明确指定属性文件的标准编码为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
}
}
我尝试从带有变音符号的文件中读取属性,这是我的 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 没有帮助,bash 中的 export GRADLE_OPTS="-Dfile.encoding=UTF-8"
也没有帮助,添加 systemProp.file.encoding=utf-8
到 gradle.properties.
我在 gradle 中找不到 Properties-Class 的文档页面,是否有配置编码的选项?
到目前为止非常感谢!
这是预料之中的,与 gradle 没有太大关系。 documentation of java.util.Properties(与Gradle无关,是JDK的标准class)明确指定属性文件的标准编码为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
}
}