Puoi anche creare database con codifica.
Usa semplicemente phpMyAdmin
per la creazione di database/tabelle.
Ci sono alcuni parametri URL che dovresti specificare nell'URL delle impostazioni di ibernazione per avere la connessione usando UTF8:
<!-- Database Settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- for performance reasons changed to MyISAM from org.hibernate.dialect.MySQLInnoDBDialect -->
<property name="dialect">org.openmeetings.app.hibernate.utils.MySQL5MyISAMDialect</property>
<property name="connection.url">jdbc:mysql://localhost/openmeetings?autoReconnect=true&useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8</property>
<property name="hibernate.connection.CharSet">utf8</property>
<property name="hibernate.connection.characterEncoding">utf8</property>
<property name="hibernate.connection.useUnicode">true</property>
Non è necessario impostare l'intera codifica nel database su utf8Solo se si utilizza
<!-- Database Scheme Auto Update -->
<property name="hbm2ddl.auto">update</property>
Dovrai impostare la codifica predefinita di MySQL su utf8. Causa il hbm2dll
utilizzerà la codifica predefinita del database.
Potresti ancora usare hbm2ddl.auto
e modificare manualmente le tabelle del database in modo che abbiano regole di confronto utf8.
Se non stai usando hbm2ddl.auto
, puoi semplicemente creare le tabelle con la tua codifica preferita. Non è necessario impostare il database su una codifica speciale.
Sebastiano
Prendi in considerazione la possibilità di modificare la configurazione dell'URL di connessione in questo modo:
<property name="hibernate.connection.url">
jdbc:mysql://localhost/yourdatabase?UseUnicode=true&characterEncoding=utf8
</property>
Risolve il caso.
Come modificare la codifica in UTF-8?
Ho usato una classe dialettale locale che ha esteso il MySQLDialect
e ho cambiato la stringa del tipo di tabella:
public class LocalMysqlDialect extends MySQLDialect {
@Override
public String getTableTypeString() {
return " DEFAULT CHARSET=utf8";
}
}
In realtà stavo estendendo il MySQL5InnoDBDialect
type quindi stavo davvero usando:
public class LocalMysqlDialect extends MySQL5InnoDBDialect {
@Override
public String getTableTypeString() {
return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
}
}