gpt4 book ai didi

Java属性: � displayed instead of ä

转载 作者:行者123 更新时间:2023-12-01 16:58:39 28 4
gpt4 key购买 nike

我有一个包含以下键和值的属性文件:

elsi.log.status.1              = Keine Änderungen

但是字符 ä 在我的网页上无法正确显示。输出是 �

但是,如果我使用 faces-config,然后直接显示来自 xhtml 的消息,则该消息的显示方式与属性文件中的相同

这是java中用于从propertyfile获取值的方法。当我调试时,这里的值已经错误了(bundle.getString(key) 返回 Keine �nderungen)

    public static String getString(String key) {
try {
Locale locale = CurrentEnvironment.getLocale();
ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE_NAME, locale);
if (bundle != null) {
return bundle.getString(key);
}
} catch (MissingResourceException e) {
return '!' + key + '!';
}
return '!' + key + '!';
}

使用xhtml直接输出即可

<h:outputText value="#{messages.elsi_copyright}" />

我还注意到用十六进制代码替换属性文件中的字符有帮助,但我想知道是否可以通过其他方式执行此操作。

感谢您的帮助

最佳答案

问题是 ResourceBundle.getBundle() 使用 ISO Latin-1 编码来读取包,因此无法解释 UTF-8 文件(插入非拉丁语时就会出现这种情况) -1 个字符,如 ä 等)。

目前我能想到2个解决方案:

  1. 用编码形式替换每个特殊字符,例如通过使用 \u00E4 形式的 unicode 点表示 ä 等
  2. 由于 Java 5 ResourceBundle 提供了一种读取 UTF-8 文件的方法,尽管内部缓存和回退机制在这种情况下不起作用,您必须自己执行此操作。

更新:而不是示例。 2、请看这里:How to use UTF-8 in resource properties with ResourceBundle

有很多好的资源可以帮助您以适合您需求的方式处理包含变音符号等的 bundle 。

关于Java属性: � displayed instead of ä,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29629253/

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