我使用Spring MVC + Hibernate应用程序,使用MySQL(ver.5.0.51a)和InnoDB引擎。Spring MVC + Hibernate编码问题
当我使用西里尔文字符发送表单时出现问题。因此,数据库包含未知编码中的无意义字符。
所有JSP页面,使用UTF-8创建的数据库(+表和字段)。 Hibernate配置还包含将编码设置为UTF-8的属性。
我已经通过创建使用UTF-8编码请求内容的过滤器来解决此问题。 示范代码:
…
encoding = "UTF-8";
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
…
但它明显减慢的应用程序。
有趣的是,直接从应用程序执行插入查询(即从Eclipse作为Java应用程序运行)是完美的。
UPD。
据我所知,使用过滤器是我的情况下唯一的工作解决方案。
我不知道标准的CharacterEncodingFilter。现在使用它,效果很好!
<filter>
<filter-name>CharacterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
像这样改变请求对象中的字符编码应该*不*对应用程序的速度有明显影响。还有什么其他的必须进行 – 2010-03-19 01:17:55
你有没有可能声明'doFilter()'方法是'syncrhonized'? – Bozho 2010-03-19 06:24:37