1. 程式人生 > >解決SpringMVC中文亂碼問題

解決SpringMVC中文亂碼問題

   說實話在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");//防止資料傳遞亂碼

寫上這句話就不會再出現亂碼了。

第三種情況:

頁面中文,傳遞到

controller也是正確的,但是儲存到資料庫之後就是亂碼(也不是嚴格意義的亂碼,跟上面一樣全是問號)

這個問題困擾了我一段時間,開始覺得資料庫的編碼格式不正確,重新建立了編碼格式為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>

中文亂碼真心是一個讓人頭疼的問題,不過好在都是可以解決的,希望大家有什麼關於中文亂碼的解決方法可以一起分享。