我在使用Web应用程序的字符编码时遇到麻烦。有一个弹出窗口,用用户输入查询数据库(按名称搜索人)。问题在于带重音的字符正被转换成奇怪的字母,例如ó => ó。这是一个非常标准的问题,但我不知道发生了什么。
ó => ó
我做了什么?
主要遵循此。
(request&response).setCharacterEncoding("UTF-8");
web.xml
server.xml
<?xml version='1.0' encoding='utf-8'?>
text/html; utf-8
但是我仍然遇到相同的问题,尽管已经解决了一些问题,例如,从服务器发送到客户端的一些带有重音符号的字母正确显示。
我已经安装了apache2.2和tomcat 6。
我不知道该怎么办,也不知道应该在此处发布哪些相关信息(如果您需要其他信息,请告诉我)…
提前致谢。
确保在数据库和JDBC驱动程序级别也正确设置了编码。如何执行取决于数据库和JDBC驱动程序的版本。有关详细信息,请查阅DB和JDBC驱动程序特定的文档。例如,对于MySQL JDBC驱动程序,您需要向JDBC连接URL添加两个特定的参数。
顺便说一下,设置XML文件编码和meta标签对HTTP请求/响应编码没有影响。对于基于JSP / Servlet的Web应用程序,仅应最小配置以下内容:
对于HTTP GET请求,请在服务器级别进行配置。在Tomcat中,可以通过设置Tomcat的中的URIEncoding属性来完成。<Connector>``server.xml
URIEncoding
<Connector>``server.xml
对于HTTP POST请求,请使用执行的过滤器ServletRequest#setCharacterEncoding()。
ServletRequest#setCharacterEncoding()
对于由JSP生成的HTTP响应pageEncoding,请<%@page%>在每个JSP的基础上设置属性,或者更好地,<page-encoding>在web.xml整个应用程序的基础上设置in 。
pageEncoding
<%@page%>
<page-encoding>
对于由servlet生成的HTTP响应(其中不涉及JSP!),请使用ServletResponse#setCharacterEncoding()。
ServletResponse#setCharacterEncoding()
最后但并非最不重要的一点是,确保您的源代码文件也保存为UTF-8。确切的配置取决于所使用的编辑器。如果是Eclipse,则可以通过“ 窗口” >“属性”>“常规”>“工作区”>“文本文件编码”对其进行控制。