什么是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表情符號了,utf8mb4是utf-8的超集 意味着反正utf8mb4也能兼容utf-8 在不考慮存儲大小的情況下 可以直接把庫設置為utf8mb4以免后續煩惱。
當前測試的數據版本為RDS mysql 5.6.16
JAVA驅動版本為5.1.30

