2016-07-30 32 views
5

Używam bazy danych spring-data-jpa i mysql. Mój zestaw znaków tabel to utf-8. Również dodałem ?useUnicode=yes&characterEncoding=utf8 do mysql url w pliku application.properties. Problem, kiedy przekazuję kontrolerowi znaki takie jak "ąčęëį", aby zapisać go w mysql. W mysql mam ??? znaki. Ale kiedy używam przykładu konsoli mysql update projects_data set data="ąęąčę" where id = 1;, wszystko działa dobrze.dane źródłowe jpa kodowanie UTF-8 nie działa

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 

tabele:

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

Odpowiedz

3

miałem te same problemy, a ja go rozwiązać poprzez dodanie tej linii do mojego application.properties pliku:

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

Uwaga: Poniższy nie praca:

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

Pamiętaj, aby uniknąć jakichkolwiek znaków specjalnych, jak poniżej: spring.datasource.url=jdbc\:mysql\://localhost\:3306/${SERVER_DB_NAME}\?useUnicode=true\&characterEncoding=utf\-8\&characterSetResults=utf\-8

1

w moim przypadku, że to rozwiąże mój problem 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