J'utilise spring-data-jpa
et mysql
base de données. Le jeu de caractères de mes tables est utf-8. J'ai aussi ajouté ?useUnicode=yes&characterEncoding=utf8
à l'url mysql dans le fichier application.properties. Problème lorsque je passe des caractères comme "ąčęėį" au contrôleur pour l'enregistrer dans mysql. Dans mysql j'ai eu ??? Des marques. Mais quand j'utilise l'exemple de console mysql update projects_data set data="ąęąčę" where id = 1;
tout fonctionne bien.
application.properties:
# "root" as username and password.
spring.datasource.url = jdbc:mysql://localhost:3306/gehive?useUnicode=yes&characterEncoding=utf8
spring.datasource.username = gehive
spring.datasource.password = pass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
# Show or not log for each sql query
spring.jpa.show-sql = true
# Hibernate ddl auto (create, create-drop, update)
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# Use spring.jpa.properties.* for Hibernate native properties (the prefix is
# stripped before adding them to the entity manager)
# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
les tables:
+---------------+--------------------+
| TABLE_NAME | character_set_name |
+---------------+--------------------+
| customer | utf8 |
| projects | utf8 |
| projects_data | utf8 |
+---------------+--------------------+
Essayer
spring.datasource.url = jdbc:mysql://localhost:3306/gehive?useUnicode=yes&characterEncoding=UTF-8
Il semble que le problème soit dû à l'absence de "-".
Référence: - https://forum.hibernate.org/viewtopic.php?f=1&t=1037497&view=next
J'ai eu les mêmes problèmes, et je l'ai résolu en ajoutant cette ligne à mon application.properties
fichier:
spring.datasource.Tomcat.connection-properties=useUnicode=true;characterEncoding=utf-8;
Remarque: Les éléments suivants ne l'ont pas fonctionnent:
spring.datasource.connectionProperties=useUnicode=true;characterEncoding=utf-8;
Pour toute personne utilisant le pool de connexions HikariCP qui préfère ne pas ajouter les paramètres directement à l'URL JDBC:
Le spring.datasource.connectionProperties
la propriété a été supprimée il y a quelque temps. Depuis lors, vous devez utiliser les propriétés spécifiques du pool de connexions, comme indiqué dans la réponse de @ SebTheGreat: spring.datasource.Tomcat.connection-properties=useUnicode=true;characterEncoding=utf-8;
Hikari n'a pas de connection-properties
propriété, mais cela fonctionne:
spring.datasource.hikari.data-source-properties.useUnicode=true
spring.datasource.hikari.data-source-properties.characterEncoding=UTF-8
N'oubliez pas d'échapper les caractères spéciaux, comme ci-dessous: spring.datasource.url=jdbc\:mysql\://localhost\:3306/${SERVER_DB_NAME}\?useUnicode=true\&characterEncoding=utf\-8\&characterSetResults=utf\-8
Dans mon cas, cela résout mon problème https://mathiasbynens.be/notes/mysql-utf8mb4
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci