【问题标题】:Issue with Character Set encoding for Emojis when using Mysql and Hibernate使用 Mysql 和 Hibernate 时表情符号的字符集编码问题
【发布时间】:2018-04-19 15:02:50
【问题描述】:

我有一个使用 Spring/Hibernate/Spring Data/Jpa 编码的应用程序

当我尝试更新实体时,我收到此错误:

[ERROR] org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrect string value: '\xEF\x83\xA8 Be...' for column 'description' at row 1

我应该在 Mysql 中使用什么字符集来解决这个问题?

谢谢

【问题讨论】:

标签: mysql hibernate encoding utf-8 emoji


【解决方案1】:

你应该使用utf8mb4 MySQL 字符集,它也变成了the default one in MySQL 8

引用 MySQL 服务器团队的帖子,如果你想使用表情符号,那么你需要 utf8mb4 字符集。

即使对于说英语的市场,表情符号的流行 字符输入正在推动 utf8mb4 的采用超过 utf8mb3 和 拉丁语1.

您可以使用以下ALTER DATABASE SSL 语句设置utf8mb4 字符集:

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

【讨论】:

  • 在我的情况下,它不适用于表情符号,当我将 PDF 或 MS word 文档复制/粘贴到 mysql 的 Varchar 列中时,它会出现。 MS Word 的内容包含特殊字符。也许这个解决方案也适用于这种情况
  • 确保您使用输入源编码阅读 MS Word 文档并以 UTF8 格式提取数据。然后,从您的应用到数据库仅使用 UTF8。
猜你喜欢
  • 2019-05-26
  • 1970-01-01
  • 2011-08-09
  • 2012-03-28
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多