java.util.Properties编码

时间:2016-01-11 10:01:38

标签: java

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

     DatePicker mDatePicker = (DatePicker) findViewById(R.id.date_picker);
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
         int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android");
         final View header = mDatePicker.findViewById(headerId);
         header.setBackgroundColor(getResources().getColor(android.R.color.black));
     }

在两个系统上,输入包含Properties prop = new Properties(); prop.load(new ByteArrayInputStream(input)); //input is byte[]

在我的测试系统上,道具包含"var=\\u00C4\\u00DC\\u00D6\\u00E4\\u00FC\\u00F6"。 (这就是我想要的)

在另一个系统道具上包含"var=ÄÜÖäüö"。这是"var=\xC4\xDC\xD6\xE4\xFC\xF6"十六进制,但为什么input会这样做?遗憾的是,我对其他系统配置一无所知。

有人知道原因吗?

1 个答案:

答案 0 :(得分:3)

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

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

Source: Javadoc

Also see this SO question

And this one