【发布时间】:2013-12-01 06:20:12
【问题描述】:
我有一个可以正常运行很长时间的项目。几天前,我将我的 Eclipse 版本更新为 Kepler 的版本,从那时起 - 我的属性文件没有被正确读取。 希伯来语字母是这样读的:“×××ש××שת×ש×ס×ס××”。
虽然文件不知何故被破坏了,所以我将它们复制粘贴到最简单的 txt 文件中,然后再次添加到项目中。如果我只是简单地阅读它们,它们就会被正确读取,但如果我继续使用 ResourceBundle 实现,它们就不会被正确读取。
有人知道如何解决这个问题吗? 我将平台和文件设置更改为 utf-8 编码 - 我能想到的任何地方......
这是资源代码:
公共类资源管理器{ protected final Logger logger = Logger.getLogger(this.getClass().getName()); 公共静态最终字符串 FILE_PREFIX = "file::"; 私有静态语言环境语言环境 = null; 私有静态地图资源表 = new HashMap(); // 本地对象的静态初始化器 - 当前返回“iw” 静止的 { locale = new Locale(ApplicationConfiguration.getInstance().getProperty("user.language")); } /** * 根据基本名称和区域设置返回资源对象。 */ 私有静态资源 getResource(String baseName) { 资源resource = (Resources) resourcesTable.get(baseName); 如果(资源==空){ 资源 = 新资源(baseName,语言环境); resourcesTable.put(baseName, 资源); } 返回资源; } //更多代码... /* 这是有问题的方法 - 但问题甚至在将资源添加到资源映射之前就开始了 */ 私人静态字符串getFormatedMessage(字符串baseName,字符串messageKey,对象... args){ 资源资源 = getResource(baseName); 字符串味精=空; if (args == null || args.length == 0) { msg = resource.getString(messageKey, ""); } 别的 { msg = resource.format(messageKey, args); } 返回味精; } …… }【问题讨论】:
-
令人惊讶的是您的主张以前曾奏效。通过属性文件定义的资源包从不支持
UTF-8。它们被定义为iso-latin-1,并且要求所有其他非拉丁字符都写为\uxxxx。他们解决此问题的唯一方法是使用自定义加载代码,但您会知道是否使用了自定义加载代码并向我们展示该代码,不是吗?
标签: java eclipse utf-8 resourcebundle