Emoji表情符号录入MySQL数据库报错的解决方案

场景:

最近在做一个微信商城

技术框架:jfinal 2.2 + jfinal weixin 1.7 +freemarker+mysql+sui;

同步微信用户信息时发现,微信用户昵称有特殊字符的用户 记录不能入库;

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8D\xAC\xE8\x95...' for column 'nickname' at row 1

记得建库建表的时候都是选择utf8 字符集;

特意搜索了下,是因为昵称中含emoji 表情的原因;

http://blog.itpub.net/26230597/viewspace-1243233/


特此备注下;

问题分析总结:
    ㈠ 原因
        普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战、避免 emoji 表情符号带来的问题、涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集,这必须要作为移动互联网行业的一个技术选型的要点
    ㈡ 限制
        需要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错。

你可能感兴趣的:(Emoji表情符号录入MySQL数据库报错的解决方案)