我在mysql 5.5.24服务器上担任DBA。最近,当一个用户尝试从iPhone登录并且其电话名称本身具有表情符号字符时,我们在生产中面临一个问题。
目前,在我们的系统中,我们有utf8字符集,它支持3个字节,但由于它的电话名称有表情符号(4个字节),注册失败。
正如本link所述,我们尝试在开发设置中重现相同的方案,但仍面临问题:
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。这可能是一个问题吗?
答案 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());