java.util.properties getProperty方法为UTF-8字符串返回null

时间:2011-10-04 07:25:08

标签: java utf-8

我在从属性文件中获取本地化值(UTF-8字符串)时遇到问题。
这就是我做的..

//properties file containing
//name=हिन्दी
public static void main(String[] args)
{
  File f = new File("path\\to\\properties\\file");
  Properties p = new Properties();
  try
   {
     p.load(new InputStreamReader(new FileInputStream(f),Charset.forName("UTF-8")));
   }
  catch(IOException iox) {}
  System.out.println(p.getProperty("name")); //outputs null
  System.out.println(p.toString()); //outputs  { name= हिन्दी }
}

由于

2 个答案:

答案 0 :(得分:2)

如果最后一行实际输出name= हिन्दी,那么看起来属性文件中的键字符串有问题;也许包括一些看不见的空白字符或者“名字”的一个字符不是常规的拉丁字母,而是看起来像它的东西。在十六进制编辑器中查看属性文件。

答案 1 :(得分:0)

你的问题在这里:

catch(IOException iox) {}

这被称为“相互失败”。永远不要这样做。从文件加载属性的代码失败并抛出异常,您甚至不知道这一点。添加e.printStackTrace()并将打印属性值的代码移动到try/catch块中。查看异常并修复错误。我相信您的文件路径是错误的,因此您将获得FileNotFoundException或者您可能没有此文件的访问权限。