emoji表情符处理替换成空格

本文介绍了一种过滤四字节UTF-8字符(如emoji表情符)的方法,并将其替换为空格,以解决MySQL存储过程中遇到的问题。通过解析字符串的字节,识别并替换特定的UTF-8编码格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
   * 用filterOffUtf8Mb4
   * Description: 过滤率四个字节的utf-8字符(emoji表情符),替换成四个空格。
   *         四字节utf-8字符mysql存储报错 
   * @Version1.0
   * @param s
   * @return
   * @throws UnsupportedEncodingException 
   * @throws Exception
   */
  public static String parseUtf8(String s) throws UnsupportedEncodingException {
    byte[] b = s.getBytes("utf-8");
    for(int i=0, len=b.length; i<len; i++){
      if ((b[i] & 0xF8) == 0xF0) {//F8=1111 1000,F0=1111 0000过滤4位UTF8编码(字头11110xxx)
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
      }
      else if ((b[i] & 0xFC) == 0xF8) {//FC=1111 1100,F8=1111 1000过滤5位UTF8编码(字头111110xx)
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
      }
      else if ((b[i] & 0xFE) == 0xFC) {//FE=1111 1110,FC=1111 1100,过滤6位UTF8编码(字头1111110x)
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
        b[i++] = 32;
      }
    }
    return new String(b, "utf-8");

  }




转载于:https://www.cnblogs.com/jgig11/p/5773005.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值