2016-07-30 73 views
5

我用spring-data-jpamysql數據庫。我的表字符集是utf-8。此外,我還將?useUnicode=yes&characterEncoding=utf8添加到application.properties文件中的mysql url。當我傳遞像「ąčęėį」這樣的字符到控制器以將其保存在mysql中時出現問題。在MySQL中我有?分數。但是當我使用mysql控制檯例子update projects_data set data="ąęąčę" where id = 1;每一個都很好。spring數據jpa UTF-8編碼不起作用

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 

表:

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

回答

3

我有同樣的問題,我加入這一行我application.properties文件解決了這個問題:

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

注:以下沒有工作:

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

記住轉義任何特殊字符,如下圖所示: spring.datasource.url=jdbc\:mysql\://localhost\:3306/${SERVER_DB_NAME}\?useUnicode=true\&characterEncoding=utf\-8\&characterSetResults=utf\-8

1

在我的情況下的解決我的問題 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