一尘不染

Tomcat的字符编码问题

tomcat

我在使用Web应用程序的字符编码时遇到麻烦。有一个弹出窗口,用用户输入查询数据库(按名称搜索人)。问题在于带重音的字符正被转换成奇怪的字母,例如ó => ó。这是一个非常标准的问题,但我不知道发生了什么。

我做了什么?

主要遵循

  • 在我的tomcat的第一个过滤器上设置 (request&response).setCharacterEncoding("UTF-8");
  • 每一个设置web.xmlserver.xml字符encodign参数<?xml version='1.0' encoding='utf-8'?>
  • 在连接器中将URIEncoding更改为UTF-8。使用Firebug,我已经看到text/html; utf-8在get帖子上将content-type设置为(主要是有问题的)
  • 将jsp上的元类型和@page更改为UTF-8。

但是我仍然遇到相同的问题,尽管已经解决了一些问题,例如,从服务器发送到客户端的一些带有重音符号的字母正确显示。

我已经安装了apache2.2和tomcat 6。

我不知道该怎么办,也不知道应该在此处发布哪些相关信息(如果您需要其他信息,请告诉我)…

提前致谢。


阅读 185

收藏
2020-06-16

共1个答案

一尘不染

确保在数据库和JDBC驱动程序级别也正确设置了编码。如何执行取决于数据库和JDBC驱动程序的版本。有关详细信息,请查阅DB和JDBC驱动程序特定的文档。例如,对于MySQL
JDBC驱动程序,您需要向JDBC连接URL添加两个特定的参数。

顺便说一下,设置XML文件编码和meta标签对HTTP请求/响应编码没有影响。对于基于JSP / Servlet的Web应用程序,仅应最小配置以下内容:

  • 对于HTTP GET请求,请在服务器级别进行配置。在Tomcat中,可以通过设置Tomcat的中的URIEncoding属性来完成。<Connector>``server.xml

  • 对于HTTP POST请求,请使用执行的过滤器ServletRequest#setCharacterEncoding()

  • 对于由JSP生成的HTTP响应pageEncoding,请<%@page%>在每个JSP的基础上设置属性,或者更好地,<page-encoding>web.xml整个应用程序的基础上设置in 。

  • 对于由servlet生成的HTTP响应(其中不涉及JSP!),请使用ServletResponse#setCharacterEncoding()

  • 最后但并非最不重要的一点是,确保您的源代码文件也保存为UTF-8。确切的配置取决于所使用的编辑器。如果是Eclipse,则可以通过“ 窗口” >“属性”>“常规”>“工作区”>“文本文件编码”对其进行控制

2020-06-16