天天看點

Mysql插入資料報錯java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8D\xE8\xBE…'[通俗易懂]

大家好,又見面了,我是你們的朋友全棧君。

前幾日在項目中遇到資料庫插入資料報錯

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