大家好,又見面了,我是你們的朋友全棧君。
前幾日在項目中遇到資料庫插入資料報錯
java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8D\xE8\xBE…’ for column ‘title’ at row 1
一直以為是中文字元編碼不對,然後找了各種編碼的東西。後來無意中發現了一篇文章:
http://blog.csdn.net/fuxuejun/article/details/20361669
其中指出了該種字元串為Emoj表情内容,每個字元占用4個位元組,在Mysql中預設最大支援3個位元組,超長了,是以報錯了。
解決辦法:
(1)在較新版本的Mysql上可選擇修改資料庫類型,滿足編碼需求,可參考上述連結中的内容。
(2)過濾掉Emoj表情相關字元,因為我這邊不需要保留Emoj表情,不需要複原顯示,是以我選擇了簡單的方式,過濾字元。
代碼如下:
/**
* 将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;
}
}</span></span>
複制
釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/143787.html原文連結:https://javaforall.cn