mysql保存表情问题

今天进行微信绑定时,数据库一直报下面这个错误:

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x8C\x99' for column 'f0014' at row 2

查询资料发现是因为表情导致的问题,现提供两个解决方法:

一、修改数据库的编码集。

1.一般数据的编码集是utf-8,但是utf-8不能保存表情,需要将utf8修改成utf8mb4的编码格式,并需要将表保存表情的字段修改为utf8mb4_general_ci。

my.ini作如下修改:

[mysqld]

character-set-server=utf8mb4

[mysql]

default-character-set=utf8mb4

修改后重启Mysql

或者使用工具只修改单个表的编码格式也可以。

2.在java链接数据库的时候不要加characterEncoding参数。

这样问题就解决了,但不知道为什么这个一直不行,所以可以尝试下面一个方法,过滤掉表情。

二、字符串中过滤掉表情

 
import org.apache.commons.lang3.StringUtils;

/**
     *  表情替换
     *
     * @param sourceStr 原字符串
     * @param slipStr emoji表情替换成的字符串
     * @return 过滤后的字符串
     */
    public static String filterEmoji(String sourceStr,String slipStr) {
        if(StringUtils.isNotBlank(sourceStr)){
            return sourceStr.replaceAll("[\\ud800\\udc00-\\udbff\\udfff\\ud800-\\udfff]", slipStr);
        }else{
            return sourceStr;
        }
    }

 

你可能感兴趣的:(java)