为什么从 ResourceBundle.getBundle 检索字符串时出现无法理解的字符

2023-12-12

请告诉我如何解决这个问题:

Locale locale = new Locale(language);
        ResourceBundle messages = ResourceBundle.getBundle("i18n.messages", locale, utf8Control);
        try {
            String message = new String(messages.getString(key).getBytes("ISO-8859-1"), "UTF-8");
            pageContext.getOut().write(message);
        } catch (IOException e) {
            e.printStackTrace();
        }

我正在尝试实现本地化,我从创建的消息文件中获取文本,问题是它输出的是“?????? ????????? ????”,而不是必要的字符。 谷歌搜索,问题似乎与编码有关,我尝试这样做:

String message = new String(messages.getString(key).getBytes("ISO-8859-1"), "UTF-8")

并且还创建了 utf8Control:

public class Utf8Control extends ResourceBundle.Control {

    @Override
    public ResourceBundle newBundle(String baseName, Locale locale, String format, ClassLoader loader, boolean reload)
            throws IllegalAccessException, InstantiationException, IOException {

        String bundleName = toBundleName(baseName, locale);
        String resourceName = toResourceName(bundleName, "properties");
        ResourceBundle bundle = null;
        InputStream stream = null;
        if (reload) {
            URL url = loader.getResource(resourceName);
            if (url != null) {
                URLConnection connection = url.openConnection();
                if (connection != null) {
                    connection.setUseCaches(false);
                    stream = connection.getInputStream();
                }
            }
        } else {
            stream = loader.getResourceAsStream(resourceName);
        }
        if (stream != null) {
            try {
                bundle = new PropertyResourceBundle(new InputStreamReader(stream, "UTF-8"));
            } finally {
                stream.close();
            }
        }
        return bundle;
    }

}

什么也没发生... JSP 有“UTF-8”编码,文件 - 默认“ISO-8859-1”


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么从 ResourceBundle.getBundle 检索字符串时出现无法理解的字符 的相关文章

随机推荐

  • 为什么复杂对象的“in”类型不窄?

    当我使用 in 对复杂对象进行类型缩小时 我偶然发现了 Typescript 中的问题 除非我首先提取它的代理变量 否则它不会正确缩小类型 type Animal fish Fish bird Bird type Fish swim gt
  • Symfony2,加载没有缓存的css文件

    目前我正在做基于symfony2的网站设计 问题是如何禁用css文件的缓存 现在 如果我更改 css 文件中的某些内容 浏览器中不会发生任何变化 当我尝试缓存 清除时 仍然什么也没有 配置 yml Assetic Configuration
  • kotlin,如何返回泛型类型成员变量

    返回泛型类型的成员变量时出错 在 Android 上 不确定是否有任何区别 private var mData T null override fun
  • 适用于 Windows 7 的 Epson OPOS ADK for .NET 驱动程序

    有没有人使用 Epson OPOS ADK for NET for Windows 7 我尝试在 Windows 7 上安装 Windows Vista 驱动程序 因为没有适用于 Windows 7 的驱动程序 但它不起作用 请分享任何可能
  • 您可以将 WCF 服务中的 WSDL 和 XSD 数据结合起来吗?

    是否可以创建一个文件来从 WCF 生成的 WSDL 文件 以及也从此服务生成的任何其他 XSD 文件 生成客户端 我可以使用 svcutil exe 生成一个有效的客户端 同时传递 wsdl 文件和每个 xsd 文件 但我有一个客户正在使用
  • 在 $PATH 中找不到 docker 可执行文件

    尝试在正在运行的 docker compose 容器上运行 Rails 迁移会引发以下错误 docker compose run webapp rails db migrate 错误 无法启动服务 webapp 标头字段值无效 oci 运行
  • 将函数分配给变量时出错

    我有简单的代码如下 var println print println test 它给了我错误 missing argument for parameter 2 in call 我添加了更多参数 println test n 它仍然给我同样
  • 异步 Action api 如何在 scala 的 play 框架 2.2.x 中工作?

    我试图创建异步 api 但响应显示顺序执行 完成步骤 在 chrome 的两个选项卡中打开 url 并且快速地一一击打他们 网址前 localhost 9000 getStar 但执行日志是这样的 info play Listening f
  • 识别R中的时间

    我正在 R 中处理一个具有如下时间变量的数据集 Time data frame X1 c 930 1130 914 1615 X1 的前两位表示小时 后两位表示分钟 我想让 R 将其识别为时间变量 我尝试使用 lubridate hm 函数
  • 如何在不使用 CTE 的情况下从日期范围创建日期列表

    以下链接解释了如何将日期范围转换为日期列表 我使用了这种方法 它工作正常 但查询没有执行 我使用 Maxrecursion 0 来无限 http blog justinstolle com sql turn a date range int
  • NGINX:将非 www https 重定向到 https://www

    我遵循了这个答案https stackoverflow com a 28068250 3108268但它仅从 http 重定向到 https 将非 www 重定向到 www 但如果我访问我的网站https example com我收到 您的
  • 如何获取iPhone上的WIFI网关地址? [复制]

    这个问题在这里已经有答案了 我需要获取与 iPhone 连接的 wifi 网络的网关地址 有人知道如何得到它吗 只是为了澄清一下 我正在寻找此屏幕的信息 Thanks 添加到您的项目route h文件来自http opensource ap
  • ConcurrentHashMap 中的分段

    我是 Java 世界的新手 我在探索 ConcurrentHashMap API 时发现了这一点 static final int DEFAULT INITIAL CAPACITY 16 static final float DEFAULT
  • 如何使用 Plotly Express 创建子图 [重复]

    这个问题在这里已经有答案了 如果您像我一样 喜欢 Plotly Express 但是当您遇到 Express 返回的数字无法使用 make subplots 的问题时感到沮丧 因为 make subplots 接受的是迹线而不是数字 在这篇
  • 允许 RSU 在 Veins 中接收消息

    我正在尝试在 Veins OMNeT SUMO 上实现一个非常简单的场景 只需三辆车和一个独特的固定 RSU 但我是 Veins 的新手 尽管有大量文档 但我无法很好地移动 常见问题解答和教程我已经读过 我的起点是默认的 TraCI 场景演
  • 库中的 CodeIgniter 验证不接受回调

    我的问题如下 我正在编写一个登录库 该库有一个函数 validation 它使用验证库来验证数据 使用正常的验证方法可以正常工作 但使用回调函数就行不通 它不被称为 我这样称呼它 this gt CI gt form validation
  • 使用 Python 通过 SSH 从服务器读取文件

    我正在尝试使用 Python 中的 SSH 从服务器读取文件 我正在使用 Paramiko 进行连接 我可以连接到服务器并运行类似的命令cat filename并从服务器取回数据 但我尝试读取的某些文件大小约为 1 GB 或更大 如何使用P
  • 使用 WebApi 和 ODataQueryOptions 实现 $select

    我正在尝试使用 ODataQueryOptions 通过自定义 DAL 实现一些 OData 功能 我的 DAL 使用设计时生成的类型化数据表 通过拦截 ODataQueryOptions 的 SelectExpand 属性 我可以让 DA
  • 具有部分更新的实体框架验证

    我将 Entity Framework 5 0 与 DbContext 和 POCO 实体一起使用 有一个包含 3 个属性的简单实体 public class Record public int Id get set public stri
  • 为什么从 ResourceBundle.getBundle 检索字符串时出现无法理解的字符

    请告诉我如何解决这个问题 Locale locale new Locale language ResourceBundle messages ResourceBundle getBundle i18n messages locale utf