hibernate mysql寫入中文亂碼 解決
啓動hibernate項目,自動創建表,插入數據之後發現寫入表裏的數據裏的中文是亂碼。按如下方法解決了:
-
修改數據庫的字符集爲UTF-8,這個可以通過mysql的客戶端軟件裏右鍵要修改的數據庫的屬性更改。
-
修改Client默認字符集爲UTF8。windows下在mysql安裝目錄(我的計算機操作系統是Windows 7 64,默認的安裝路徑在:C:\Program Files (x86)\MySQL\MySQL Server 5.0)下找到my.ini,將裏面的default-character-set=latin1 改爲default-character-set=UTF8,然後重起mysql服務即可將數據庫默認字符集改爲utf8。
-
在項目的hibernate的配置文件hibernate.cfg.xml裏修改name爲“hibernate.connection.url"的property的值爲:jdbc:mysql://localhost:3306/tdm?useUnicode=true&characterEncoding=UTF-8,其中tdm爲數據庫的名稱。
-
然後啓動項目,執行代碼,插入的中文就不會是亂碼了。
“&”是什麼意思?
"&;"就是'&' 只是在HTML中的&用&來表示比如你要得到' '的字符串,而不是空格,那就用&;nbsp
XML有5個轉義符: < >& " '
直接用&連接的話,報錯如下
正確配置如下:
hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/hib2019?useUnicode=true&characterEncoding=UTF-8
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<mapping resource="com/jxq/model/User.hbm.xml" />
</session-factory>
</hibernate-configuration>