一、修改數據庫
1)首先修改數據字符集
2)修改涉及此問題的表字段字符集
3)修改數據庫連接池配置
我們項目用的是阿里巴巴的DruidDataSource數據庫連接池,貼一下修改位置
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource"
..... Add property.....
<property name="connectionInitSqls" value="set names utf8mb4;" />
</bean>
- 1
- 2
- 3
- 4
如果是apache的BasicDataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
....
<!-- 此配置用於在創建Connection對象時執行指定的初始化sql -->
<property name="connectionInitSqls" value="set names utf8mb4;" />
</bean>
4)jdbc連接串設置:
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8
建議刪除useUnicode=true&characterEncoding=utf8,
5)其他問題:
1.MySQL版本要求:不低於5.5.3(不支持utf8mb4編碼)
2.JDBC驅動版本要求:mysql connector版本高於5.1.13
二、修改代碼
/**
* 將emoji表情替換成空串
*
* @param source
* @return 過濾後的字符串
*/
public static String filterEmoji(String source) {
if (source != null && source.length() > 0) {
return source.replaceAll("[\ud800\udc00-\udbff\udfff\ud800-\udfff]", "");
} else {
return source;
}
}