这个问题 https://blog.csdn.net/ppwangGS/article/details/62044887
有详细的解决办法 这里我就是记录一下我遇到的问题
这种问题一般是往数据库 插入通讯录的时候碰到 (起的名字什么都有)
第一种方法
数据库 设计表的时候 我们一般设置varchar一般是utf8 utf8_general_ci 如果出现这种状态 那么改成 utf8mb4 utf8m64_general_ci
当然这种方法不一定管用 我碰到过两次这个问题 第一次就这样修改的没有起作用 用的第二种方法 第二次修改完美解决 这应该和数据库的配置有关系
第二种方法
我们如果碰到这种4字节(一般是表情) 那么我们可以用java识别出来 然后替换成 ** 或者 “” 这就是复制的了 亲测可用
public static String filterEmoji(String source,String slipStr) { if(StringUtils.isNotBlank(source)){ return source.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", slipStr); }else{ return source; } }