讓mysql支持emoji表情
阿新 • • 發佈:2018-10-22
阿裏 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
表情符號了,utf8mb4
是utf-8
的超集 意味著反正utf8mb4
也能兼容utf-8
在不考慮存儲大小的情況下 可以直接把庫設置為utf8mb4
以免後續煩惱。
當前測試的數據版本為RDS mysql 5.6.16
JAVA驅動版本為5.1.30
讓mysql支持emoji表情