Vous pouvez également créer des bases de données avec encodage.
Utilisez simplement phpMyAdmin
pour la création de la base de données/table.
Il y a certains paramètres d'URL que vous devez spécifier dans l'URL des paramètres d'hibernation pour avoir la connexion en utilisant 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>
Vous n'avez pas besoin de définir l'ensemble de l'encodage dans la base de données sur utf8Seulement si vous utilisez
<!-- Database Scheme Auto Update -->
<property name="hbm2ddl.auto">update</property>
Vous DEVEZ définir l'encodage par défaut de MySQL sur utf8. Provoquer le hbm2dll
utilisera l'encodage par défaut de la base de données.
Vous pouvez toujours utiliser hbm2ddl.auto
, et modifiez manuellement les tables de la base de données pour avoir un classement utf8.
Si vous n'utilisez pas hbm2ddl.auto
, vous pouvez simplement créer les tables avec votre encodage préféré. Pas besoin de définir la base de données sur un encodage spécial.
Sébastien
Envisagez de modifier la configuration de l'URL de connexion comme ceci :
<property name="hibernate.connection.url">
jdbc:mysql://localhost/yourdatabase?UseUnicode=true&characterEncoding=utf8
</property>
Cela résout l'affaire.
Comment changer l'encodage en UTF-8 ?
J'ai utilisé une classe de dialecte local qui a étendu le MySQLDialect
et changé la chaîne de type table :
public class LocalMysqlDialect extends MySQLDialect {
@Override
public String getTableTypeString() {
return " DEFAULT CHARSET=utf8";
}
}
J'étendais en fait le MySQL5InnoDBDialect
tapez donc j'utilisais vraiment :
public class LocalMysqlDialect extends MySQL5InnoDBDialect {
@Override
public String getTableTypeString() {
return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
}
}