MySQL表情存储报错的美妙解法 \xF0\x9F\x8C\x9

不改数据库字符编码java

发现网上都说将数据库编码修改成utf8mb4,可是我用了这样的方式,发现并无什么用,,而后而后,就发现了下面的这种方式:数据库

解决思路:将包含表情的字符先进行转码(表情转字符),转成普通字符存入数据库中,在显示到页面的时候再进行一次转码(字符转表情)app

为了解决客户说的这个要求我硬是搞了小半天,怎么设置数据库字符编码都不对, 心疼本身三秒钟,结果用下面的方式,分分钟搞定 简直爽歪歪maven

maven项目导入依赖ui

<dependency>
     <groupId>com.vdurmont</groupId>
     <artifactId>emoji-java</artifactId>
    <version>3.2.0</version>
</dependency>
  • 调用方式:
  • EmojiParser.parseToAliases(“nickname”); 将表情符号转为字符
  • EmojiParser.parseToUnicode(“nickname”); 将字符转为表情符号

 

String nick = EmojiParser.parseToAliases(nickname);
String nick = EmojiParser.parseToUnicode(nickname);
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value="建立评论管理")
public ResponseMessage<?> create(@ApiParam(name="评论管理对象") CmsCommentEntity cmsComment, UriComponentsBuilder uriBuilder) {
   //保存
   try{
      //存储前先将表情转成字符
      cmsComment.setContent(EmojiParser.parseToAliases(cmsComment.getContent()));
      cmsCommentService.save(cmsComment);
   } catch (Exception e) {
      e.printStackTrace();
      return Result.error("评论管理信息保存失败");
   }
   //显示的时候将字符回转成表情符
   cmsComment.setContent(EmojiParser.parseToUnicode(cmsComment.getContent()));
   return Result.success(cmsComment);
}

表情转码后在数据库中是这样的:哦哦哦:blush::blush::blush:编码

相关文章
相关标签/搜索