spring,web,java 開發中亂碼解決方案

  1. 修改HTML/JSP頁面編碼格式:

    <meta charset="UTF-8">或<%@ page contentType="text/html; charset=UTF-8"%> 


  2. web.xml中的編碼設置(  需要設置forceEncoding參數值爲true,強制以目標編碼爲編碼格式 )

       

<filter>
       <filter-name>CharacterEncoding</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>CharacterEncoding</filter-name>
       <url-pattern>/*</url-pattern>
   </filter-mapping>

但這個設置是針對POST請求的,tomacat對GET和POST請求處理方式是不同的,要處理針對GET請求的編碼問題,則需要改tomcat的server.xml配置文件,如下:



3.tomcat的server.xml配置文件

<Connector 
connectionTimeout="20000" 
port="8080" 
protocol="HTTP/1.1" 
redirectPort="8443"


 />


4.數據庫亂碼

  配置數據源編碼格式

<property name="url" 

value="jdbc:mysql://121.40.90.125/test?useUnicode=true&characterEncoding=utf-8"></property>   


然後去修改數據庫、表中列的編碼格式爲utf8


讓MySQL支持Emoji表情

解決方案:將Mysql的編碼從utf8轉換成utf8mb4。


修改數據庫字符集:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

 

修改表的字符集:

ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

 

修改字段的字符集:

ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;


5.SpringMVC的@ResponseBody註解可以將請求方法返回的對象直接轉換成JSON對象,

但是當返回值是String的時候,中文會亂碼,原因是因爲其中字符串轉換和對象轉換用的是兩個轉換器,

而String的轉換器中固定了轉換編碼爲"ISO-8859-1"

解決方案:

第一種:在@RequestMapping中添加produces="text/html;charset=UTF-8


第二種:在MVC 配置中加入,spring版本必需爲3.1或以上版本纔可以下配置

<mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
              <constructor-arg value="UTF-8" />
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章