讓mysql支持emoji表情

什麼是emoji

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

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

 

mysql中存儲emoji表情符號

之前作應用軟件的時候 一般把mysql的字符編碼設置爲utf-8,可是這個編碼卻不支持emoji表情 是由於utf-8編碼的一個字符最多隻能存儲3個字節,但一個emoji表情爲4個字節,因此utf8不支持存儲emoji表情。sql

mysql中的utf8mb4卻能支持emoji表情符號 因此咱們只須要更改mysql的數據庫編碼格式爲utf8mb4就能支持了。固然了表和字段也須要是這個編碼的,在不手動設置表/字段編碼的狀況下,會默認繼承數據庫的編碼格式。若是手動修改成字段或者表的編碼 也須要手動把表和字段修改成utf8mb4數據庫

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

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

[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編碼

  

相關文章
相關標籤/搜索