1. 程式人生 > >字符集處理: UTF-8

字符集處理: UTF-8

字符集處理: UTF-8

字符集主要涉及 2 個方面
  • 檔案本身的字符集(檔案,資料庫儲存使用,返回給瀏覽器端的 html 內容)
  • 程式中編碼解碼時候使用的字符集(如解析 http 請求的資料)

為了防止亂碼,我們規定:所有的字符集都用 UTF-8

1. IDEA 裡設定字符集

IDEA EncodingProject EncodingProperties Encoding 都使用 UTF-8,這樣 IDEA 裡建立的檔案都是 UTF-8 編碼的,建立 Project 的時候已經設定過了。

2. JSP 中字符集的設定

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

3. HTML 中字符集的設定

<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
</head>

4. Tomcat 處理 GET 請求的字符集設定

前臺網頁的 GET 請求以 UTF-8 來解析,pom.xml 裡設定 uriEncoding

<!-- Web Server Tomcat -->
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>${tomcat.version}</version> <configuration> <path>/</path> <uriEncoding>UTF-8</uriEncoding> <!--處理 GET 的中文-->
</configuration> </plugin>

5. Tomcat 處理 POST 請求的字符集設定

前臺網頁的 POST 請求以 UTF-8 來解析,web.xml 加上字符集的 filter 處理 POST 的中文

<!-- 處理 POST 的中文 -->
<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>

6. Freemarker 模版生成檔案的字符集設定

在配置 Freemarker 的時候已經設定過了。

<property name="contentType" value="text/html; charset=UTF-8"/>

7. AJAX 返回有亂碼?

由處理 @ResponseBody 返回字串的 MessageConverter 的編碼設定造成的,配置 spring-mvc.xml 中的 MessageConverter(去掉mvc:annotation-driven/

<!-- 預設的註解對映支援 -->
<!--<mvc:annotation-driven/>-->

<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>

8. 資料庫的字符集設定

建立資料庫的時候,選擇 Encoding 為 UTF-8

9. 配置 JDBC 連線資料庫的字符集為 UTF-8

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

10. 使用 UTF-8 啟動 Web Server(Tomcat)

10.1. Unix Like 配置 Tomcat

在 Tomcat 啟動檔案 catalina.sh 中加一個 -Dfile.encoding=UTF-8

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

10.2. Windows 配置 Tomcat

在 Tomcat 啟動檔案 catalina.bat 中加一個 -Dfile.encoding=UTF-8

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"