我正在阅读包含欧元符号的属性文件。当它在屏幕上打印时看起来完全不同。我比较了来自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);
}
答案 0 :(得分:5)
采用Properties.load
的{{1}}方法假设文件以InputStream
字符编码保存,不能直接代表欧元符号。如果文件确实采用不同的编码(如UTF-8),那么您应该使用ISO-8859-1
代替load
的方法,并使用Reader
指定正确的编码。< / p>
或者,InputStreamReader
个文件支持Unicode转义序列,因此您可以在文件中将欧元符号表示为Properties
,当文件为时,它将被解码为真正的\u20ac
字符。加载。
除此之外,当前代码中存在许多缺陷,最重要的是,您需要确保在从中加载属性后正确关闭输入流。最简单的方法是尝试使用资源&#34;语法
€
每次从中请求值时重新加载属性文件似乎都很浪费,您可以考虑只加载一次(在前面或第一次请求它)并缓存{{1}对象供以后使用。