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

时间:2013-01-08 17:11:01

标签: mysql utf-8 emoji

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

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

正如本link所述,我们尝试在开发设置中重现相同的方案,但仍面临问题:

  1. 我在将DB中的该列的字符集更改为utf8mb4之后尝试了 - 没有成功
  2. 我修改了将整个数据库的charset更改为utf8mb4 - No Success
  3. 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端的Charset仍然是utf8。这可能是一个问题吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

以下是要插入的查询:

insert into homeDetails (homeId, homeDescription, routerMac, routerSSID, arpMac, homeDetailTS)values (123,'des','mactest',convert ('EmotRS'using utf8mb4),'aprtest', now());