让mysql支持emoji表情
什么是emoji
emoji就是表情符號(hào) emoji的創(chuàng)造者是日本人栗田穰崇(Shigetaka Kurita)
在數(shù)據(jù)庫(kù)的編碼不為utf8mb4,利用java mysql驅(qū)動(dòng)保存含有表情符號(hào)的數(shù)據(jù)會(huì)出現(xiàn)異常java.sql.SQLException: Incorrect string value: '\xF0\x9F\x94\xA5' for column
?
mysql中存儲(chǔ)emoji表情符號(hào)
以前做應(yīng)用軟件的時(shí)候 通常把mysql的字符編碼設(shè)置為utf-8,但是這個(gè)編碼卻不支持emoji表情 是因?yàn)閡tf-8編碼的一個(gè)字符最多只能存儲(chǔ)3個(gè)字節(jié),但一個(gè)emoji表情為4個(gè)字節(jié),所以u(píng)tf8不支持存儲(chǔ)emoji表情。
mysql中的utf8mb4卻能支持emoji表情符號(hào) 所以我們只需要更改mysql的數(shù)據(jù)庫(kù)編碼格式為utf8mb4就能支持了。當(dāng)然了表和字段也需要是這個(gè)編碼的,在不手動(dòng)設(shè)置表/字段編碼的情況下,會(huì)默認(rèn)繼承數(shù)據(jù)庫(kù)的編碼格式。如果手動(dòng)修改為字段或者表的編碼 也需要手動(dòng)把表和字段修改為utf8mb4
物理機(jī)安裝的數(shù)據(jù)庫(kù)數(shù)據(jù)字符編碼修改方式
修改mysql的配置文件/etc/mysql/my.cnf?并重啟數(shù)據(jù)庫(kù) 如果是編譯安裝 有可能不是這個(gè)目錄噢~
[mysql] default-character-set=utf8mb4云數(shù)據(jù)庫(kù) 如阿里云的RDS 修改數(shù)據(jù)庫(kù)編碼方式
找到指定庫(kù)的參數(shù)設(shè)置中找到character_set_server修改為utf8mb4并重啟數(shù)據(jù)庫(kù)
客戶端驅(qū)動(dòng)連接的URL
jdbc:mysql://rr-xxxxx40.mysql.rds.aliyuncs.com:3306/db_test?useUnicode=true&zeroDateTimeBehavior=convertToNull&characterEncoding=utf-8
這樣就能在mysql中存儲(chǔ)emoji表情符號(hào)了,utf8mb4是utf-8的超集 意味著反正utf8mb4也能兼容utf-8?在不考慮存儲(chǔ)大小的情況下 可以直接把庫(kù)設(shè)置為utf8mb4以免后續(xù)煩惱。
當(dāng)前測(cè)試的數(shù)據(jù)版本為RDS mysql 5.6.16
JAVA驅(qū)動(dòng)版本為5.1.30
轉(zhuǎn)載于:https://www.cnblogs.com/peachyy/p/9829479.html
總結(jié)
以上是生活随笔為你收集整理的让mysql支持emoji表情的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MIMO雷达比幅单脉冲测角精度分析(系统
- 下一篇: LeetCode 21 ——合并两个有序