emoji就是表情符號 emoji的創造者是日本人慄田穰崇(Shigetaka Kurita)java
在數據庫的編碼不爲utf8mb4
,利用java mysql驅動保存含有表情符號的數據會出現異常java.sql.SQLException: Incorrect string value: '\xF0\x9F\x94\xA5' for column
mysql
之前作應用軟件的時候 一般把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
找到指定庫的參數設置中找到character_set_server
修改成utf8mb4
並重啓數據庫測試
jdbc:mysql://rr-xxxxx40.mysql.rds.aliyuncs.com:3306/db_test?useUnicode=true&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8
這樣就能在mysql
中存儲emoji
表情符號了,utf8mb4
是utf-8
的超集 意味着反正utf8mb4
也能兼容utf-8
在不考慮存儲大小的狀況下 能夠直接把庫設置爲utf8mb4
以避免後續煩惱。阿里雲
當前測試的數據版本爲RDS mysql 5.6.16
JAVA驅動版本爲5.1.30編碼