我在 mysql 5.5.24 服务器上担任 DBA。最近,当一位用户尝试从 iPhone 登录并且其手机名称本身具有表情符号时,我们在生产中遇到了一个问题。
目前,在我们的系统中,我们有 utf8 字符集,它支持 3 个字节,但由于它的电话名称有 emoji(4 个字节),所以注册失败。
如此链接中所述,我们尝试在我们的开发设置中重现相同的场景,但仍然面临问题:
- 我在将 DB 中仅该列的字符集更改为 utf8mb4 后尝试过 - 没有成功
- 我修改了将整个数据库的字符集更改为 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。这可能是一个问题吗?