解決資料庫插入emoji表情符號問題
阿新 • • 發佈:2019-01-24
在新專案的開發中,突然遇到一個問題資料插入資料庫報錯誤,經過問題的復現以及除錯發現,當資料插入到資料庫的時候報如下錯誤:
Incorrect string value: '\xF0\x9F\x99\x88\xF0\x9F...' for column 'nickname' at row 1
通過問題復現以及日誌解析後發現:原來測試人員在輸入的時候插入了表情符號emoji字元,根據查詢資料解決方案如下:
主要針對MySql資料庫和阿里的Druid資料連線池
1.MySQL的版本不能太低,低於5.5.3的版本不支援utf8mb4編碼。select version(); 2.JDBC驅動版本不能太低,mysql connector版本高於5.1.13。 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> 3.將表中的對應欄位,其字符集修改成utf8mb4。 4.最後修改druid資料來源的配置,增加一行: <property name="connectionInitSqls" value="set names utf8mb4;"/> 5.檢查下jdbc連線串的設定: jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8 這裡要注意:有人建議刪除useUnicode=true&characterEncoding=utf8,但好像我這裡會發生儲存資料時發生亂碼的現象。