我有一个正常运行的项目很长一段时间。两天前,我将我的Eclipse版本更新为Kepler的版本,从那时起 - 我的属性文件无法正确读取。 希伯来文字母的内容如下:“××××××××××××××××××××××”。
我虽然以某种方式破坏了文件,但我将它们复制粘贴到最简单的txt文件中并再次添加到项目中。如果我只是简单地阅读它们就可以正确读取它们,但如果我继续使用ResourceBundle实现它们就无法正确读取。
有没有人知道如何解决这个问题? 我将平台和文件设置更改为utf-8编码 - 我能想到的任何地方......
这是资源代码:
public class ResourceManager { protected final Logger logger = Logger.getLogger(this.getClass().getName()); public static final String FILE_PREFIX = "file::"; private static Locale locale = null; private static Map resourcesTable = new HashMap(); // Static initializer of the Local object - this currently return "iw" static { locale = new Locale(ApplicationConfiguration.getInstance().getProperty("user.language")); } /** * Return the Resources object according to the base name and Locale. */ private static Resources getResource(String baseName) { Resources resource = (Resources) resourcesTable.get(baseName); if (resource == null) { resource = new Resources(baseName, locale); resourcesTable.put(baseName, resource); } return resource; } //more code... /* This is the problematic method - but the problem starts even before when adding the resource to the resources map */ private static String getFormatedMessage(String baseName, String messageKey, Object... args) { Resources resource = getResource(baseName); String msg = null; if (args == null || args.length == 0) { msg = resource.getString(messageKey, ""); } else { msg = resource.format(messageKey, args); } return msg; } .... }
答案 0 :(得分:2)
最终我没有创建新的工作区 - 我希望我的代码可以在任何平台下工作,并且#34;在任何条件下#34;。所以我通过更改代码来使用Properties而不是Resources来解决它。 作为输入参数,我使用了一个带有" utf-8"编码集:
ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver(); Resource[] fileInJar = resourceResolver.getResources(filePath); Properties properties = new Properties(); BufferedReader reader = new BufferedReader(new InputStreamReader(fileInJar[0].getInputStream(), "UTF-8")); properties.load(reader);
感谢那些回答!我真的很感激......
卡梅尔
答案 1 :(得分:1)
打开eclipse,转到菜单“project” - > properties->资源并将编码设置为utf-8 或“窗口” - >首选项 - > general->工作区和设置编码