Sto usando import.sql per scrivere i miei dati di sviluppo su DB. Sto usando MySQL Server 5.5 e la mia persistence.xml è qui:Hibernate/JPA import.sql utf8 caratteri corrotti
<?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>
Alcuni personaggi nel mio import.sql non viene mostrato correttamente nel DB. Ad esempio, il carattere ü diventa ¼ in db. charset di default in MySQL è utf-8 e io sono tavoli che creano come
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;
E 'strano che se importare utilizzando i dati di Mysql responsabile import/export è corretto ma utilizzando hibernate.hbm2ddl.auto = creare rende personaggi corrotti .
Come posso risolvere questo?
Edit: Anche io ho provato ad aggiungere
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.connection.characterEncoding"
value="UTF-8" />
<property name="hibernate.connection.charSet" value="UTF-8" />
a persistence.xml. Ma non ha aiutato.
Correzione: L'ho risolto alla fine. Sto usando Tomcat e questo è il punto di corruzione non ibernato o mysql. L'ho avviato con il comando set JAVA_OPTS = -Dfile.encoding = UTF-8 e il mio problema scompare.
Il titolo di domanda è diventato fuorviante ora. Perdonami per quello.
+1 per la ragione corretta, tuttavia l'ipotesi non è corretta, perché i test potrebbero essere dipendenti dalla piattaforma. La soluzione più semplice è impostare la codifica del file di testo su 'UTF-8' nel proprio IDE o' -Dfile.encoding = UTF8 'se si utilizza Maven come @Jaroslav Frolikov ha già affermato. –
Ancora non funziona nel 2017 – gstackoverflow