【发布时间】:2012-09-03 19:52:59
【问题描述】:
对于开发,我使用ResourceBundle 直接从 IDE 的资源目录中读取 UTF-8 编码的属性文件(我在 Eclipse 的文件属性中设置了该文件)(native2ascii 用于生产方式),例如:
menu.file.open.label=&Öffnen...
label.btn.add.name=&Hinzufügen
label.btn.remove.name=&Löschen
由于在使用非 ASCII 字符时会导致字符编码出现问题,我认为我会很满意:
ResourceBundle resourceBundle = ResourceBundle.getBundle("messages", Locale.getDefault());
String value = resourceBundle.getString(key);
value = new String(value.getBytes(), "UTF-8");
嗯,它确实适用于小写的德语变音符号,但不适用于大写的,ß 也不起作用。这是用getString(key) 读取的值和用new String(value.getBytes(), "UTF-8") 转换后的值:
&Löschen => &Löschen
&Hinzufügen => &Hinzufügen
&Ã?ber => &??ber
&SchlieÃ?en => &Schlie??en
&Ã?ffnen... => &??ffnen...
最后三个应该是:
&Ã?ber => &Über
&SchlieÃ?en => &Schließen
&Ã?ffnen... => &Öffnen...
我想我离真相并不太远,但我在这里错过了什么?
Google 找到了 something similar,但仍未得到答复。
编辑:更多代码
【问题讨论】:
标签: java character-encoding resourcebundle