弹簧数据 jpa utf-8 编码不起作用

新手上路,请多包涵

我使用 spring-data-jpamysql 数据库。我的表字符集是 utf-8。我还添加了 ?useUnicode=yes&characterEncoding=utf8 到 application.properties 文件中的 mysql url。当我将“ąčęėį”之类的字符传递给控制器以将其保存在 mysql 中时出现问题。在 mysql 中我得到了???分数。但是当我使用 mysql 控制台示例 update projects_data set data="ąęąčę" where id = 1; 时,每个都运行良好。

应用程序.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               |
+---------------+--------------------+

原文由 Edgaras Karka 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 547
2 个回答

我遇到了同样的问题,我通过将此行添加到我的 application.properties 文件中解决了这个问题:

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

注意: 以下 _无效_:

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

原文由 SebTheGreat 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题