java.util.Properties 编码

unk*_*own 2 java

我在两个不同的系统上得到不同的结果,不知道为什么。

Properties prop = new Properties();
prop.load(new ByteArrayInputStream(input)); //input is byte[]
Run Code Online (Sandbox Code Playgroud)

在两个系统上,输入都包含"var=\\u00C4\\u00DC\\u00D6\\u00E4\\u00FC\\u00F6".

在我的测试系统中,道具包含"var=ÄÜÖäüö". (这就是我要的)

在另一个系统道具上包含"var=\xC4\xDC\xD6\xE4\xFC\xF6". 这是input十六进制的,但为什么Properties要这样做?不幸的是,我对其他系统配置一无所知。

有人知道原因吗?

Ste*_*art 5

Java.properties文件用ISO-8859-1( Latin-1)编码,而不是UTF-8。所有非拉丁 1 字符必须使用 Unicode 转义字符输入,例如\uHHHH.

另一种方法是使用XML属性格式,即 IS UTF-8.

来源:Javadoc

另请参阅此问题

和这个