【发布时间】:2014-09-01 07:29:37
【问题描述】:
我们将用户选择的表情符号存储在 MySQL 的文本正文中。我们的专栏是这样的
`body` text CHARACTER SET utf8 COLLATE utf8_bin,
原始数据:<div id='mobile-question-style' style=\"font-family: 'Helvetica Neue',Helvetica,Arial; color:#333333;\">\uD83D\uDE1D\uD83D\uDE3E\uD83D\uDE3E\uD83D\uDE3A\uD83D\uDE3A\uD83D\uDE1D</div>
数据库中的数据:<div id='mobile-question-style' style="font-family: 'Helvetica Neue',Helvetica,Arial; color:#333333;">????????????</div>
但是如果从 Rest API 获取它,它看起来是正确的:"body":"<div id='mobile-question-style' style=\"font-family: 'Helvetica Neue',Helvetica,Arial; color:#333333;\">\uD83D\uDE1D\uD83D\uDE3E\uD83D\uDE3E\uD83D\uDE3A\uD83D\uDE3A\uD83D\uDE1D</div>",
现在当我更新问题时,使用 Rest API 会丢失它的编码并显示“????”
我更新后来自端点的数据:"body":"<div id='mobile-question-style' style=\"font-family: 'Helvetica Neue',Helvetica,Arial; color:#333333;\">????????????</div>",
更新正文时有特殊的逻辑,所以有人知道这里发生了什么吗?
【问题讨论】:
-
准确记录 Java 端的每个字符串,并在数据库中切换到
utf8mb。 -
谢谢 Karol S,我得到了 Unknown character set: 'utf8mb' 我想我们使用的是
-
我不能保证任何事情。我建议在尝试转换任何内容之前进行备份,并更新 MySQL 以确保安全性和性能。
-
感谢 Karol S. 但有一个问题困扰着我,为什么我插入时它可以工作,但我更新时却搞砸了?我们正在使用休眠,会不会有问题?
-
也许吧。您是在应用程序端和/或数据库端记录 SQL 吗?日志可以提供一些启示。