使用Hibernate向Mysql中插入中文資料出現亂碼
要解決這個亂碼問題需要做好下面幾點(這裡我使用的是UTF-8格式的中文編碼):
1.所有程式碼編碼格式設定為UTF-8
2.所有jsp頁面設定為UTF-8具體如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
3.tomcat伺服器設定UTF-8,具體如下:
D:\03_Java\01_Tomcat\Tomcat7.0\conf\serverl.xml檔案這是為:
<Connector port="8087" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
4.加上過濾器過濾字元(這裡使用spring自帶的字元編碼過濾器)具體如下:
在web.xml中配置: <span style="white-space:pre"> </span><filter> <filter-name>encodingFilter</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> <!-- encoding filter for jsp page --> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
5.將找到MySql的安裝目錄:
D:\01_Software\Program Files\MySQL Server 5.6\my-default.ini 檔案,
在其中新增default-character-set=utf8,如果有,就直接修改。
6.在配置資料來源的url時要像如下配置:
jdbc:mysql://localhost:3306/edifiergl?useUnicode=true&characterEncoding=utf-8"
ps:
在這裡要說明一下,有些人給出的配置是
jdbc:mysql://localhost:3306/edifiergl?useUnicode=true&
這在有些配置檔案中會報錯:The reference to entity "characterEncoding" must end with the ';' delimiter.
所以我在這裡建議使用&取代&,在xml的轉義字元中&是等價於&的。
通過以上步驟,應該可以保證儲存到mysql中的資料不會出現亂碼了。