奇怪的是,Tomcat Webapp UTF-8字符在每次重启或每次重新部署后都无法正确显示

时间:2009-12-21 05:28:48

标签: tomcat utf-8

我们有一个奇怪的问题,正确显示UTF-8字符的网络应用程序,这是事实:

  • Tomcat 6.0.20,在Ubuntu 9.04上运行
  • 我们遵循建议Get UTF-8 Working
  • 我们的Webapp能够正确显示UTF-8字符

但是,每当我们的开发人员重新部署我们的webapp模块,或者当我们重新启动tomcat时,所有UTF-8字符都显示为?????在我们的浏览器..

我们必须正确地重启Tomcat(等待Tomcat完全停止,然后重新启动tomcat),虽然很烦人,但确实解决了问题。

之前有没有人遇到类似的问题,谢谢你的建议。

2 个答案:

答案 0 :(得分:12)

如果您确定内容为UTF-8,则可以使用。在catalina.sh文件中设置此行(例如,在巨大的初始注释之后,在导出之前很久):

export CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF-8"

此外,我们不知道您是否正在使用数据库中的数据。检查你是否正确地把它放在那里。

答案 1 :(得分:0)

因此,JSP页面编码很疯狂。如果您已经按照您找到正确方法的文章进行了操作,那么这隐含意味着

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

破了。

第一步是验证已部署文件夹中的具体JSP文件(如果它仍然存在)。下一步是验证appserver工作文件夹中的已编译.java文件是否至少包含try块开头的以下行:

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

最后一步是验证获得的响应标头。这取决于webbrowser如何查看它们。在标准的Firefox环境中,您可以通过右键单击页面&gt;找到它。 查看页面信息编码必须提及UTF-8。同样在Firefox中,在顶部菜单栏中,您可以通过查看&gt;检查和播放字符编码。 字符编码

收集完所有这些信息后,您必须能够确定根本原因。

编辑:作为附注,Ubuntu开箱即用,带有 buggy GNU JDK / JRE。我强烈建议摆脱它并安装Sun's own JDK/JRE。你永远不会知道,我已经看到许多其他“无法解释的”问题/错误已经通过用更坚固的JDK / JRE替换JDK / JRE来解决。