想必大家都用过*.properties文件,作为配置文件。但是,如果该文件写入了中文,待编译后内容就会成为乱码,使用native命令也好、使用ant执行编码转换也好,多少有点麻烦,与其如此,我们不如直接使用properties的xml格式。
对应原有的properties文件
这里需要替换 {0} ,可以使用 MessageFormat ,参考如下代码:
得到控制台输出:
因为使用XML格式,不受系统编译影响,不存在中文问题!
- <?xmlversion="1.0"encoding="UTF-8"?>
- <!DOCTYPEpropertiesSYSTEM"http://java.sun.com/dtd/properties.dtd">
- <properties>
- <comment>系统配置</comment>
- <entry
- key="logo.location"><![CDATA[/image/logo/]]></entry>
- <entry
- key="mail.host"><![CDATA[webmaster@zlex.org]]></entry>
- <entry
- key="site.name"><![CDATA[zlex中文网站]]></entry>
- <entry
- key="welcome"><![CDATA[欢迎您,{0}!]]></entry>
- </properties>
对应原有的properties文件
- #系统配置
- logo.location=/image/logo/
- mail.host=webmaster@zlex.org
- site.name=zlex中文网站
- welcome=欢迎您,{0}!
这里需要替换 {0} ,可以使用 MessageFormat ,参考如下代码:
- privateFileInputStreamfis;
- @Before
- publicvoidinit(){
- try{
- fis=newFileInputStream(newFile("config.xml"));
- }catch(Exceptione){
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
- @Test
- publicvoidt(){
- Propertiesproperties=newProperties();
- try{
- properties.loadFromXML(fis);
- System.err.println(MessageFormat.format(
- (String)properties.get("welcome"),"snowolf"));
- }catch(Exceptione){
- e.printStackTrace();
- fail(e.getMessage());
- }
- }
得到控制台输出:
引用
欢迎您,snowolf!

因为使用XML格式,不受系统编译影响,不存在中文问题!