emoji就是表情符号,已普遍应用于手机短信和网络聊天软件。
emoji表情就是这个:
在做一个手机app后台时,发现一个问题,通过hibernate进行mysql存储这种emoji表情时,一直在抛异常:
类似java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94';
这个是编码格式的问题,UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节。
mysql有个新的编码格式,即utf8mb4,将数据库表的编码格式改为这个就行了。由于这个是新的编码格式,所以请尽量使用较新的mysql数据库,大概在mysql5.5以后便可了。
说是这么说,但是我改了之后还是同样的错误,在经过很多努力的调试下,终于发现了问题:
mysql的java驱动包使用的是比较老的驱动。
换成新版本就成功了。
具体要多新没有试过,比较老的版本是使用的3,是不行的。
更换过版本之后将数据库的字符集更换:
set character_set_client=utf8mb4;
set character_set_connection=utf8utf8mb4;
set character_set_database=utf8utf8mb4;
set character_set_results=utf8utf8mb4;
set character_set_server=utf8utf8mb4;
set collation_connection=utf8mb4_general_ci;
set collation_database=utf8mb4_general_ci;
set collation_server=utf8mb4_general_ci;
来源:https://www.cnblogs.com/lic309/p/4133309.html