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");