从包含utf 8字符的属性文件中读取

时间:2015-06-10 11:31:00

标签: java parsing encoding utf-8

我正在读取一个属性文件,该文件由UTF-8字符集中的消息组成。

问题

输出格式不正确。我使用的是username=LBSUSER password=Lbs@123 url=http://localhost:1010/soapfe/services/MessagingWS timeout=20000 message=Spanish character are = {á é í, ó,ú ,ü, ñ, ç, å, Á, É, Í, Ó, Ú, Ü, Ñ, Ç, ¿, °, 4° año = cuarto año, €, ¢, £, ¥}

属性文件看起来像

Properties props = new Properties();
props.load(new FileInputStream("uinsoaptest.properties"));
String username = props.getProperty("username", "test");
String password = props.getProperty("password", "12345");
String url = props.getProperty("url", "12345");
int timeout = Integer.parseInt(props.getProperty("timeout", "8000"));
String messagetext = props.getProperty("message");
System.out.println("This is soap msg : " + messagetext);

我正在读这样的文件,

{************************ SOAP MESSAGE TEST***********************}

以上消息的输出是

enter image description here

您可以在行

后的控制台中看到该消息

{{1}}

如果我能正确阅读此文件,我将不胜感激。我可以用另一种方法阅读这个文件,但我正在寻找更少的代码修改。

4 个答案:

答案 0 :(得分:41)

\[[0-9]{1,1}:[0-9]{1,2}:[0-9]{1,2}\] 使用InputStreamReader

Properties.load(Reader reader)

答案 1 :(得分:2)

请改用props.load(new FileReader("uinsoaptest.properties"))。默认情况下,它使用编码Charset.forName(System.getProperty("file.encoding")),可以使用System.setProperty("file.encoding", "UTF-8")或命令行参数-Dfile.encoding=UTF-8设置为UTF-8。

答案 2 :(得分:0)

在构造FileInputStream对象时,应指定UTF-8编码。您可以使用此构造函数:

new FileInputStream("uinsoaptest.properties", "UTF-8");

如果要对JVM进行更改以便能够默认读取UTF-8文件,则必须将JVM选项中的JAVA_TOOL_OPTIONS更改为:

-Dfile.encoding=UTF-8

答案 3 :(得分:0)

如果有人使用@Value注释,可以尝试StringUils。

@Value("${title}")
private String pageTitle;

public String getPageTitle() {
    return StringUtils.toEncodedString(pageTitle.getBytes(Charset.forName("ISO-8859-1")), Charset.forName("UTF-8"));
}