gpt4 book ai didi

Java ResourceBundles 无法正确读取 utf-8 字符 - 升级 Eclipse 后

转载 作者:行者123 更新时间:2023-11-29 05:34:18 25 4
gpt4 key购买 nike

我有一个项目可以正常运行很长时间。两天前,我将我的 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;            }        ....        }

最佳答案

最终我没有创建新的工作区——我希望我的代码可以在任何平台下“在任何条件下”运行。所以我通过更改代码以使用属性而不是资源来解决它。作为输入参数,我使用了带有“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);

感谢回答的人!我真的很感激...

卡梅尔

关于Java ResourceBundles 无法正确读取 utf-8 字符 - 升级 Eclipse 后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20042040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com