我使用import.sql將我的開發數據寫入數據庫。我使用的MySQL Server 5.5和我的persistence.xml是在這裏:Hibernate/JPA import.sql utf8字符損壞
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="MobilHM" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>tr.com.stigma.db.entity.Doctor</class>
<class>tr.com.stigma.db.entity.Patient</class>
<class>tr.com.stigma.db.entity.Record</class>
<class>tr.com.stigma.db.entity.User</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="true" />
<!-- Auto detect annotation model classes -->
<property name="hibernate.archive.autodetection" value="class" />
<!-- Datasource -->
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.username" value="mobilhm" />
<property name="hibernate.connection.password" value="mobilhm" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/mobilhm" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
某些字符在我import.sql沒有在DB正確顯示。例如,字符ü變成以db爲單位。在MySQL默認字符集是UTF-8,我創建表像
CREATE TABLE doctor (doctorId int unsigned NOT NULL AUTO_INCREMENT, name varchar(45) NOT NULL, surname varchar(45) NOT NULL, PRIMARY KEY (doctorId)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
這是奇怪的,如果我輸入使用MySQL導入/導出管理器數據是正確的,但使用hibernate.hbm2ddl.auto =創建使得亂碼。
我該如何解決這個問題?
編輯: 還有我嘗試添加
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding"
value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8" />
到persistence.xml中。但它沒有幫助。
修復: 我最終解決了它。我使用的是Tomcat,這是不是休眠或者mysql的腐敗點。我已經開始設置JAVA_OPTS = -Dfile.encoding = UTF-8命令,我的問題消失了。
問題的標題現在變得令人誤解。對不起。
+1由於正確的原因,但假設是不正確的,因爲那麼你的測試將是平臺相關的。如果使用Maven作爲@Jaroslav Frolikov已經說過,最簡單的解決方案是將文本文件編碼設置爲IDE中的「UTF-8」或「 -Dfile.encoding = UTF8 」。 –
它在2017年仍然不起作用 – gstackoverflow