gpt4 book ai didi

jsp - servlet 应用程序中的 Unicode 字符显示为问号

转载 作者:行者123 更新时间:2023-12-02 22:24:56 28 4
gpt4 key购买 nike

最近在How to internationalize a Java web application?的基础上实现了国际化.

但现在我在某些页面中遇到了问题。如果是英文,则显示良好,但如果我们选择任何其他语言,则该页面中的所有值都显示为 ??????????

image

我已经检查了服务器日志中的异常情况,但我找不到任何人。

这是怎么引起的,我该如何解决?

最佳答案

看到 ?????? 而不是可理解的字符(甚至而不是 Mojibake )通常表明负责的数据传输本身非常清楚在这两个过程中使用的编码来源和目的地。在一般的 Web 应用程序中,只有 2 个地方是这种情况:数据通过 JDBC 传输到 DB 或从 DB 传输时,以及数据通过 response.getWriter( )(由 JSP 隐式使用)。

在您使用属性文件的特定情况下,没有数据库的方法,因此 HTTP 响应仍然是主要嫌疑人。当服务器未被指示使用 UTF-8 解码写入 HTTP 响应的字符,而是使用一些平台默认编码(最常见的是 ISO-8859-1)时,可能会发生此问题。这样源中的任何字符都不是 covered通过 ISO-8859-1 将变成问号。由于 ISO-8859-1 专用于拉丁字符,因此这将影响所有 非拉丁字符,例如中文、日文、阿拉伯文、西里尔文、希伯来文、梵文等。它们都会写成问号。

这可以在每个 JSP 的基础上通过将以下内容添加到 JSP 的最顶部来修复:

<%@page pageEncoding="UTF-8" %>

(请注意,您确实需要将它放在每个 JSP 中,还有包含文件!)

或者,更好的是,通过将以下条目添加到 webapp 的 web.xml 中,在应用程序范围内修复它:

<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>

另见:

关于jsp - servlet 应用程序中的 Unicode 字符显示为问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13108466/

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