对于使用utf8编码的mysql数据库来说,如果字符串中存在emoji小图像,是不能存进数据库中的,查了一下,原因大概是因为utf8编码可以存1-3个字节的字符,但是emoji是4个字节;解决方法可以把mysql的编码换成utf8mb4,需要相应版本的mysql;另外一种方法是把字符串中所有的emoji给去除掉,然后在存进数据库,具体的方法是:
public static String filterEmoji(String source,String slipStr) { if(isNotBlank(source)){ return source.replaceAll("[\ud800\udc00-\udbff\udfff\ud800-\udfff]", slipStr); }else{ return source; } }