讓MySql支持Emoji表情存儲

標籤: mysql emoji 2016-05-19 10:24 1922人閱讀 評論(0) 收藏 舉報 分類: 數據庫(4)
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。java

手機端插入Emoji表情,保存到數據庫時報錯:mysql

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for column 'review' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)sql

經檢查緣由: UTF-8編碼有多是兩個、三個、四個字節。Emoji表情是4個字節,而MySQL的utf8編碼最多3個字節,因此數據插不進去。數據庫

解決方案:將Mysql的編碼從utf8轉換成utf8mb4。編碼

  1. 修改my.ini [mysqld] character-set-server=utf8mb4

2. 在後臺配置mysql鏈接參數中,不要加characterEncoding參數。 不加這個參數時,默認值就時autodetect。code

  1. 將已經建好的表也轉換成utf8mb4 命令:ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; (將TABLE_NAME替換成你的表名)
  2. 將須要使用emoji的字段設置類型爲: 命令:ALTER TABLE TABLE_NAMEMODIFY COLUMN COLUMN_NAME text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
相關文章
相關標籤/搜索