java mysql 过滤emoji表情符号

  • A+
所属分类:java

移动互联网场景中,用户昵称或者文章中经常出现表情符号。因为表情符号不是utf-8 编码。表情是4字节表示的,utf-8是3字节。所以入库时会报错。类似如下:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for colum n 'nickname' at row 1

可以通过修改mysql字符集为utf8mb4和驱动来支持表情符号。但是如果是线上商用项目,可能不方便修改。可以使用替换表情符号的方法来规避。比如用‘*’号等符号来替代表情符号。

方法如下:

    private static String filterEmoji(String source, String slipStr)
    {
        if (null == source)
        {
            return null;
        }
        
        return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", slipStr);
    }



  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: