我在与字符编码为Web应用程序的麻烦。 还有就是queryes用户输入数据库(按姓名搜索人)弹出。 的问题是,重音字符正在转化为怪异字母等ó => ó
。 这是一个非常标准的问题,但我无法弄清楚到底是怎么回事。
我做了什么?
主要是,遵循此 。
- 在第一过滤器上的Tomcat我的设置
(request&response).setCharacterEncoding("UTF-8");
- 设置每
web.xml
, server.xml
的字符encodign参数<?xml version='1.0' encoding='utf-8'?>
。 - 在连接器改变的URIEncoding为UTF-8。 使用萤火虫,我已经看到,内容类型设置为
text/html; utf-8
text/html; utf-8
的get职位(其中主要是有问题的的那些) - 变化对JSP的元类型和@page为UTF-8。
但我仍然有同样的问题,虽然有些已经解决,例如,从服务器向客户端发送一些重音字母,能正确显示。
我有APACHE2.2和Tomcat 6安装。
我不知道自己还能做什么我也不应该张贴的内容相关的信息在这里(如果你需要的东西,请告诉我)...
提前致谢。
确保编码是在数据库和JDBC驱动程序级也定好了。 如何做到这一点取决于数据库和JDBC驱动程序化妆/版本。 详细信息请参考DB和JDBC驱动程序的具体文件。 对于MySQL JDBC驱动程序,例如,你需要两个特定的参数添加到JDBC连接URL。
顺便说一句,设置XML文件编码和meta标签对HTTP请求/响应的编码没有影响。 只有以下应最小配置为JSP / Servlet的Web应用程序:
对于HTTP GET请求,在服务器级别配置。 在Tomcat中,这是通过设置来完成URIEncoding
的属性<Connector>
Tomcat的server.xml
。
对于HTTP POST请求,使用一个过滤器,其做了ServletRequest#setCharacterEncoding()
对于由JSP中生成HTTP响应,设定pageEncoding
的属性<%@page%>
在每个JSP的基础上,或者,设置更好<page-encoding>
在条目web.xml
针对应用范围的基础。
对于由小服务程序生成的(其中没有JSP被卷入!)HTTP响应使用ServletResponse#setCharacterEncoding()
最后但并非最不重要的,请确保您的源代码文件也被保存为UTF-8。 确切的配置取决于所使用的编辑器。 在Eclipse的情况下,可以通过窗口>属性>常规>工作空间>文本文件编码控制它。
也可以看看:
在为Debian用户的java选项
/etc/default/tomcat7
我把这个
set JAVA_OPTS=-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8
然后所有编码似乎遇到为UTF-8在默认情况下..
对我来说,这解决了这个问题。
对我来说Finaly helfull是这篇文章
我的总结:
添加“的URIEncoding =” UTF-8"属性到你的连接器在server.xml中。类似,
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
然后添加服务器端过滤器的字符编码。 在与弹簧的Tomcat的情况下以下行添加到web.xml中:
<filter>
<filter-name>charsetFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>