java存储emoji表情mysql问题

别说谁变了你拦得住时间么 提交于 2020-01-17 04:48:25

    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;

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!