1. 程式人生 > >使用Hibernate向Mysql中插入中文資料出現亂碼

使用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&amp;characterEncoding=utf-8"

ps:

在這裡要說明一下,有些人給出的配置是

jdbc:mysql://localhost:3306/edifiergl?useUnicode=true&

characterEncoding=utf-8"

這在有些配置檔案中會報錯:The reference to entity "characterEncoding" must end with the ';' delimiter.

所以我在這裡建議使用&amp;取代&,在xml的轉義字元中&amp;是等價於&的。

通過以上步驟,應該可以保證儲存到mysql中的資料不會出現亂碼了。