我使用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