1. 程式人生 > >解決資料庫插入emoji表情符號問題

解決資料庫插入emoji表情符號問題

在新專案的開發中,突然遇到一個問題資料插入資料庫報錯誤,經過問題的復現以及除錯發現,當資料插入到資料庫的時候報如下錯誤:

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,但好像我這裡會發生儲存資料時發生亂碼的現象。