2

我在 mysql 5.5.24 服务器上担任 DBA。最近,当一位用户尝试从 iPhone 登录并且其手机名称本身具有表情符号时,我们在生产中遇到了一个问题。

目前,在我们的系统中,我们有 utf8 字符集,它支持 3 个字节,但由于它的电话名称有 emoji(4 个字节),所以注册失败。

如此链接中所述,我们尝试在我们的开发设置中重现相同的场景,但仍然面临问题:

  1. 我在将 DB 中仅该列的字符集更改为 utf8mb4 后尝试过 - 没有成功
  2. 我修改了将整个数据库的字符集更改为 utf8mb4 - 没有成功

Java 日志:

2013-01-08 11:21:54,547 ERROR [org.hibernate.util.JDBCExceptionReporter] (http-0.0.0.0) Incorrect string value: '\xF0\x9F\x98\x84' for column 'deviceDescription' at row 1

数据库日志:

insert into deviceDetails (deviceDescription, remoteStatus, deviceStatus) values ('?', 0, 1)

注意:Java 端的字符集仍然是 utf8。这可能是一个问题吗?

4

2 回答 2

2

这里。还要确保您的连接字符集是 utfmb4。

Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4
于 2013-04-20T20:55:41.863 回答
0

这是要插入的查询:

insert into homeDetails (homeId, homeDescription, routerMac, routerSSID, arpMac, homeDetailTS)values (123,'des','mactest',convert ('EmotRS'using utf8mb4),'aprtest', now());
于 2014-09-14T10:43:28.657 回答