2016-07-30 5 views
5

Ich verwende spring-data-jpa und mysql Datenbank. Mein Tabellen-Zeichensatz ist utf-8. Auch habe ich ?useUnicode=yes&characterEncoding=utf8 mysql URL in der Datei application.properties hinzugefügt. Problem, wenn ich Zeichen wie "ąčęėį" an den Controller übergebe, um es in mysql zu speichern. In Mysql habe ich ??? Marken. Aber wenn ich mysql Konsole Beispiel update projects_data set data="ąęąčę" where id = 1; verwende, funktioniert alles gut.Federdaten jpa utf-8 Codierung funktioniert nicht

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 

Tabellen:

+---------------+--------------------+ 
| TABLE_NAME | character_set_name | 
+---------------+--------------------+   
| customer  | utf8    | 
| projects  | utf8    | 
| projects_data | utf8    | 
+---------------+--------------------+ 

Antwort

3

hatte ich die gleichen Probleme, und ich löste es durch diese Linie meiner application.properties Datei hinzufügen:

spring.datasource.tomcat.connection-properties=useUnicode=true;characterEncoding=utf-8; 

Hinweis: Die folgende tat nicht Arbeit:

spring.datasource.connectionProperties=useUnicode=true;characterEncoding=utf-8; 
1

Denken Sie daran, alle Sonderzeichen zu entkommen, wie unten: spring.datasource.url=jdbc\:mysql\://localhost\:3306/${SERVER_DB_NAME}\?useUnicode=true\&characterEncoding=utf\-8\&characterSetResults=utf\-8

1

In meinem Fall ist das mein Problem lösen 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 
Verwandte Themen