讓MySql支持Emoji表情(MySQL中4字節utf8字符保存方法)

UTF-8編碼有多是兩個、三個、四個字節。Emoji表情是4個字節,而Mysql的utf8編碼最多3個字節,因此數據插不進去。java

 

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

 

CREATE TABLE IF NOT EXISTS we_contact(
 `id` INT AUTO_INCREMENT PRIMARY KEY,
  `openid` VARCHAR(50) NOT NULL  COMMENT '用戶標識',
  `nickname` VARCHAR(500) NOT NULL  DEFAULT '' COMMENT '暱稱'
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

對於已建好的表sql

 

轉換成utf8mb4 
   命令:ALTER TABLE `TABLE_NAME` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; (將TABLE_NAME替換成你的表名)
將須要使用emoji的字段設置類型爲: 
   命令:ALTER TABLE `TABLE_NAME`MODIFY COLUMN `COLUMN_NAME`  text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

 

使用 java鏈接數據庫時數據庫

 

在Connector/J的鏈接參數中,不要加characterEncoding參數。 不加這個參數時,默認值就時autodetect。

 

使用PHP
SET NAMES 'utf8mb4';
例如Yii框架中  db=>array('connectionString' => '...',  'charset' => 'utf8mb4' ),
框架

測試MySQL版本
Server version: 5.6.20測試

相關文章
相關標籤/搜索