我在两个不同的系统上得到不同的结果,但不知道为什么。
Properties prop = new Properties();
prop.load(new ByteArrayInputStream(input)); //input is byte[]
在两个系统上,输入都包含 "var=\\u00C4\\u00DC\\u00D6\\u00E4\\u00FC\\u00F6"
。
在我的测试系统中,prop 包含 "var=ÄÜÖäüö"
。 (这就是我想要的)
在另一个系统 Prop 上包含 "var=\xC4\xDC\xD6\xE4\xFC\xF6"
。这是十六进制的 input
,但为什么 Properties
会这样做呢?不幸的是,我对其他系统配置一无所知。
有人知道原因吗?
最佳答案
Java .properties
文件使用 ISO-8859-1
(Latin-1
) 编码,而不是 UTF-8
。所有非 Latin-1 字符都必须使用 Unicode 转义字符输入,例如\uHHHH
。
另一种方法是对属性使用 XML
格式,即 UTF-8
。
关于java.util.Properties 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34718637/