解決SpringMVC中文亂碼問題
阿新 • • 發佈:2019-01-28
說實話在ITOO開發初期最令人頭疼了除了沒辦法熱部署就是亂碼問題了,不是資料庫亂了就是頁面亂了,真心是心塞呀,好好的資料總是亂碼讓人情何以堪。
這裡總結幾條可以解決中文亂碼的問題,希望對大家有幫助:
通常情況下我們都把編碼格式設定成UTF-8。
第一種情況:
jsp頁面中文輸入,到controller亂碼,這時候需要設定的是在web.xml檔案中新增一個編碼的過濾器(filter)將編碼統一為UTF-8,程式碼如下:
Web.xml配置檔案:
<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> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
這裡需要注意的是,最好把這段程式碼放在web.xml中開頭的位置,因為攔截有順序,如果放在後面的話容易攔截不到。
第二種情況:
資料庫中文資料,jsp頁面顯示亂碼(不是嚴格意義上的亂碼,而是以問號的形式呈現)
由於我們前後臺的資料互動使用的是json資料,出現這種情況的原因我也不太清楚,之前也沒遇到過,只能怪自己做過的專案太少,解決起來也不困難,只需要在轉json的時候設定一下編碼格式就可以了,程式碼如下:
response.setContentType("application/json;charset=UTF-8");//防止資料傳遞亂碼
寫上這句話就不會再出現亂碼了。
第三種情況:
頁面中文,傳遞到
這個問題困擾了我一段時間,開始覺得資料庫的編碼格式不正確,重新建立了編碼格式為utf-8的資料庫也還是不可以,最後覺得是jboss的問題,我們的伺服器用的是jboss,上網查了資料在連線資料來源的時候加上編碼格式就可以了,程式碼如下:
<datasource jta="true" jndi-name="java:jboss/datasources/JcMysqlDS" pool-name="JcMysqlDS" enabled="true" use-java-context="true"> <connection-url>jdbc:mysql://192.168.24.46/ITOO_BASIC_BASIC?useUnicode=true&characterEncoding=UTF-8</connection-url> <driver>mysql</driver> <pool> <prefill>false</prefill> <use-strict-min>false</use-strict-min> <flush-strategy>FailingConnectionOnly</flush-strategy> </pool> <security> <user-name>root</user-name> <password>123456</password> </security> </datasource>
中文亂碼真心是一個讓人頭疼的問題,不過好在都是可以解決的,希望大家有什麼關於中文亂碼的解決方法可以一起分享。