美文网首页
表情插入数据库问题

表情插入数据库问题

作者: 风一样的存在 | 来源:发表于2019-03-07 19:56 被阅读0次

    问题描述:

    有时候数据中含有一些字段是含有字符表情,数据库设置为utf-8编码还是会出现问题如下:


    出现的问题

    解决办法:

    • 原来Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。直接的方法就是直接替换掉str.replaceAll("[^\u0000-\uFFFF]", "");
    • 修改数据库的编码:将Mysql的编码从utf8转换成utf8mb4,但是会引入性能问题,utf8mb4的性能可能比utf8系列的collations低。utf8mb4最大可存储的字符可能少于utf8系列的collation;在索引中,对于文本类型的字段,utf8mb4可索引的字符少于utf8系列的collations。如InnoDB的索引最多使用767字节。如果使用utf8mb4,每一个字符都会预留4字节做索引,而utf8则预留3字节。故此前者是191个字符,后者是255个字符
    • 转义表情符号,把表情符号转义存入数据库,查询出来的时候再解析成表情符号。
    <dependency>
      <groupId>com.vdurmont</groupId>
      <artifactId>emoji-java</artifactId>
      <version>4.0.0</version>
      <scope>compile</scope>
    </dependency>
    

    使用方法:

    //转义
    System.out.println(EmojiParser.parseToAliases("😄😄😄😄😄😄").replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", ""));
    //解析
    System.out.println(EmojiParser.parseToUnicode(":smile::smile::smile::smile::smile::smile:"));
    

    相关文章

      网友评论

          本文标题:表情插入数据库问题

          本文链接:https://www.haomeiwen.com/subject/lnvhpqtx.html