1. 程式人生 > >讓mysql支持emoji表情

讓mysql支持emoji表情

阿裏 5.1 utf8 ash .cn 重啟 ren ebe encoding

什麽是emoji

emoji就是表情符號 emoji的創造者是日本人栗田穰崇(Shigetaka Kurita)

在數據庫的編碼不為utf8mb4,利用java mysql驅動保存含有表情符號的數據會出現異常java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x94\xA5‘ for column

mysql中存儲emoji表情符號

以前做應用軟件的時候 通常把mysql的字符編碼設置為utf-8,但是這個編碼卻不支持emoji表情 是因為utf-8編碼的一個字符最多只能存儲3個字節,但一個emoji表情為4個字節,所以utf8不支持存儲emoji表情。

mysql中的utf8mb4卻能支持emoji表情符號 所以我們只需要更改mysql的數據庫編碼格式為utf8mb4就能支持了。當然了表和字段也需要是這個編碼的,在不手動設置表/字段編碼的情況下,會默認繼承數據庫的編碼格式。如果手動修改為字段或者表的編碼 也需要手動把表和字段修改為utf8mb4

物理機安裝的數據庫數據字符編碼修改方式

修改mysql的配置文件/etc/mysql/my.cnf 並重啟數據庫 如果是編譯安裝 有可能不是這個目錄噢~

[mysql]
default-character-set=utf8mb4

雲數據庫 如阿裏雲的RDS 修改數據庫編碼方式

找到指定庫的參數設置中找到character_set_server

修改為utf8mb4並重啟數據庫

客戶端驅動連接的URL

jdbc:mysql://rr-xxxxx40.mysql.rds.aliyuncs.com:3306/db_test?useUnicode=true&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8

  

這樣就能在mysql中存儲emoji表情符號了,utf8mb4utf-8的超集 意味著反正utf8mb4也能兼容utf-8 在不考慮存儲大小的情況下 可以直接把庫設置為utf8mb4以免後續煩惱。

當前測試的數據版本為RDS mysql 5.6.16
JAVA驅動版本為5.1.30

  技術分享圖片

讓mysql支持emoji表情