mysql - 通过 Java 从 iOS 应用程序将表情符号字符插入 MySQL DB

标签 mysql utf-8 emoji

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

目前我们的系统有utf8字符集,支持3字节,但由于手机名称带有emoji(4字节),导致注册失败。

正如本文中提到的link ,我们尝试在开发设置中重现相同的场景,但仍然面临问题:

  1. 我在将数据库中仅该列的字符集更改为 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。这会是一个问题吗?

最佳答案

参见here 。另请确保您的连接字符集是 utfmb4。

Db     characterset:    utf8mb4
Client characterset:    utf8mb4
Conn.  characterset:    utf8mb4

关于mysql - 通过 Java 从 iOS 应用程序将表情符号字符插入 MySQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14220410/

相关文章:

javascript - 将 json 从对象重新制作为数组?

xml - 在XML中编码二进制数据:是否有比base64更好的替代方法?

python - 将表情符号放入代码中是否有任何风险/缺点?

java - Whatsapp 聊天中的表情符号

javascript - 如何使用原生 js 获得这个 emoji 😀 dec 表示?

mysql - 轻松删除 SQL 表中的重复条目

mysql - 如何从同一列中选择满足2个要求的用户

mysql - 如何重新排列 MySQL 列?

ruby - 文件编码在 ruby​​ 中生成空白字符——为什么?

php - UTF-8贯穿始终