我在 mysql 5.5.24 服务器上担任 DBA。最近,我们在生产中遇到了一个问题,一名用户尝试从 iPhone 登录,而其手机名称本身包含表情符号字符。
目前我们的系统有utf8字符集,支持3字节,但由于手机名称带有emoji(4字节),导致注册失败。
正如本文中提到的link ,我们尝试在开发设置中重现相同的场景,但仍然面临问题:
- 我在将数据库中仅该列的字符集更改为 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。这会是一个问题吗?
最佳答案
参见here 。另请确保您的连接字符集是 utfmb4。
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
关于mysql - 通过 Java 从 iOS 应用程序将表情符号字符插入 MySQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220410/