字符集處理: UTF-8
字符集主要涉及 2 個方面
文件本身的字符集(文件,數據庫存儲使用戈钢,返回給瀏覽器端的 html 內容)
程序中編碼解碼時候使用的字符集(如解析 http 請求的數據)
為了防止亂碼馆蠕,我們規(guī)定:所有的字符集都用 UTF-8期升。
- idea2017 里設置字符集
file -> settings -> editor -> fileEncodings -> Global Encoding , Project Encoding 都設置成 utf-8 - JSP 中字符集的設置
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
- HTML 中字符集的設置
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
</head>
- 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>
- 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>
- Freemarker 模版生成文件的字符集設置
在配置 Freemarker 的時候已經設置過了播赁。
<property name="contentType" value="text/html; charset=UTF-8"/>
- 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>
- 數據庫的字符集設置
創(chuàng)建數據庫的時候吼渡,選擇 Encoding 為 UTF-8 - 配置 JDBC 連接數據庫的字符集為 UTF-8
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
- 使用 UTF-8 啟動 Web Server(Tomcat)
- Unix Like 配置 Tomcat
在 Tomcat 啟動文件 catalina.sh 中加一個 -Dfile.encoding=UTF-8
改好后是這樣JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"
- Windows 配置 Tomcat
在 Tomcat 啟動文件 catalina.bat 中加一個 -Dfile.encoding=UTF-8
修改好后是這樣set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8"
- Unix Like 配置 Tomcat