欧元符号未在属性文件中正确显示

时间:2014-08-29 15:58:09

标签: java java-ee character-encoding properties-file

我正在阅读包含欧元符号的属性文件。当它在屏幕上打印时看起来完全不同。我比较了来自props文件的字符串,并使用equals方法声明另一个带有相同文本的字符串,这是假的.Pls可以有人帮助我。

properities file
your purchase order is €

string text="your purchase order is €";

on comparing the above strings it fails.

************************
public String getProperty(String arg0) {
        Properties prop = new Properties();
        InputStream input = null;


            try {
                input = new FileInputStream("C:/text.properties");

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {

                prop.load(input);

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        return prop.getProperty(arg0);

    }

1 个答案:

答案 0 :(得分:5)

采用Properties.load的{​​{1}}方法假设文件以InputStream字符编码保存,不能直接代表欧元符号。如果文件确实采用不同的编码(如UTF-8),那么您应该使用ISO-8859-1代替load的方法,并使用Reader指定正确的编码。< / p>

或者,InputStreamReader个文件支持Unicode转义序列,因此您可以在文件中将欧元符号表示为Properties,当文件为时,它将被解码为真正的\u20ac字符。加载。

除此之外,当前代码中存在许多缺陷,最重要的是,您需要确保在从中加载属性后正确关闭输入流。最简单的方法是尝试使用资源&#34;语法

每次从中请求值时重新加载属性文件似乎都很浪费,您可以考虑只加载一次(在前面或第一次请求它)并缓存{{1}对象供以后使用。