Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp servlet应用程序中的Unicode字符显示为问号_Jsp_Servlets_Character Encoding_Internationalization_Jstl - Fatal编程技术网

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

Jsp servlet应用程序中的Unicode字符显示为问号,jsp,servlets,character-encoding,internationalization,jstl,Jsp,Servlets,Character Encoding,Internationalization,Jstl,最近我实现了基于的国际化 但是现在我在一些页面上遇到了一个问题。如果是英语,则显示良好,但如果我们选择任何其他语言,则该页面中的所有值都显示为????? 我已经检查了服务器日志中的异常,但找不到任何人 这是如何造成的,我如何解决它?看到的是可理解的字符而不是可理解的字符(甚至不是),通常表明负责的数据传输本身非常清楚在源和目标中使用的编码。在一般的web应用程序中,只有两个地方是这样的:数据通过JDBC传输到DB或从DB传输到DB的时间点和数据通过response.getWriter()传输到

最近我实现了基于的国际化

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

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


这是如何造成的,我如何解决它?

看到的是可理解的字符而不是可理解的字符(甚至不是),通常表明负责的数据传输本身非常清楚在源和目标中使用的编码。在一般的web应用程序中,只有两个地方是这样的:数据通过JDBC传输到DB或从DB传输到DB的时间点和数据通过
response.getWriter()传输到HTTP响应的时间点(JSP隐式使用)

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

通过在JSP的最顶端添加以下内容,可以在每个JSP的基础上解决此问题:

<%@page pageEncoding="UTF-8" %>
另见:

实际上,在发送响应之前,servlet中缺少一行

i、 我们忘了设置内容类型

下面是要包含在servlet中的代码

response.setContentType("text/html;charset=UTF-8");

谢谢你的回复,先生。请在我的所有.jsp页面中参考
response.setContentType("text/html;charset=UTF-8");