我的 Maven 父 POM 包含
<file.encoding>UTF-8</file.encoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
我有一个包含以下代码的 JUnit-Test:
byte[] bytes;
System.out.println("------------------" + System.getProperty("file.encoding"));
try {
bytes = "ü".getBytes(); // german umlaut u - two bytes in utf-8 one byte in latin-1
System.out.println("Byte count: " + bytes.length);
for (int i = 0; i < bytes.length; i++) {
System.out.println(String.format("%02x", bytes[i]));
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("------------------" + Charset.defaultCharset());
当我运行 mvn clean test (在我的 Windows 机器上,默认字符集为 Cp1252)时,输出是
------------------Cp1252
Byte count: 1
fc
------------------windows-1252
当我运行 mvn -Dfile.encoding=UTF-8 clean test 时,输出为:
------------------UTF-8
Byte count: 1
fc
------------------windows-1252
现在我有两个问题:
1) 我的 POM 中的 <file.encoding> 属性有什么用?
2)当我指定 -Dfile.encoding=UTF-8 时,为什么默认字符集没有更改为 UTF-8(因此 getBytes() 仍然使用 'cp1252' 并返回 1 个字节),我该如何更改
提前致谢,
罗纳德