Mur*_*mel 2 encoding utf-8 latin1 gradle
我尝试从带有变音符号的文件中读取属性,这是我的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
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的属性文件看起来像(UTF-8编码):
challenge: ö
Run Code Online (Sandbox Code Playgroud)
如果我执行任务:gradle utf8test
结果看起来像
:utf8test
ö
BUILD SUCCESSFUL
Total time: 0.877 secs
Run Code Online (Sandbox Code Playgroud)
"ö"变为"",这很容易理解.十六进制的"ö"是c3b6,latin-1中的c3是Ã而b6是,但它不是我所期望的.
问题:如何配置gradle以读取属性为UTF-8编码
更多信息:
如果我用gradle打印出propFiles内容:
println propFile.text
Run Code Online (Sandbox Code Playgroud)
我收到"ö"作为输出,因此正确读入文件,我的shell正确编码输出.
Gradle-daemon以:-Dfile.encoding = UTF-8运行
使用-Dfile.encoding = UTF-8执行gradle:gradle utf8test -Dfile.encoding=UTF-8没有帮助,export GRADLE_OPTS="-Dfile.encoding=UTF-8"bash也没有帮助,也没有添加systemProp.file.encoding=utf-8到gradle.properties.
我无法在gradle中找到Properties-Class的文档页面,是否有配置编码的选项?
非常感谢到目前为止!
这是预期的,与gradle没什么关系.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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1051 次 |
| 最近记录: |