關(guān)于MySQL實(shí)現(xiàn)指定編碼遇到的坑
寫(xiě)在前面
環(huán)境:MySQL5.7+,MySQL數(shù)據(jù)庫(kù)字符編碼實(shí)現(xiàn)為utf8,表也為utf8
場(chǎng)景:微信授權(quán)獲取用戶信息(包括昵稱)并保存到數(shù)據(jù)庫(kù),有的用戶成功了,少數(shù)用戶卻失敗了
那么為什么會(huì)失敗呢?
貼上報(bào)錯(cuò)日志
Incorrect string value: '\xF0\x9F\x98\x98\xF0\x9F...' for column 'nickname' at row 1
是因?yàn)槭〉挠脩粑⑿抨欠Q中帶有emoji符號(hào)導(dǎo)致的
剖析:
MySQL支持多種字符編碼集,如UTF-8、GB2312、GBK等
可以通過(guò) SHOW CHARSET 命令查看。
通常我們會(huì)建議使用 UTF-8 作為默認(rèn)的字符編碼方式。
從上圖我們可以看到,MySQL數(shù)據(jù)庫(kù)有兩套 UTF-8 編碼實(shí)現(xiàn)。
- utf8:utf8 編碼只支持三個(gè)字節(jié)以內(nèi)。在 utf8 編碼中,中文是占了3個(gè)字節(jié),其他的英文、數(shù)字、符號(hào)都是占1個(gè)字節(jié)。但是emoji符號(hào)占4個(gè)字節(jié),一些比較復(fù)雜的文字、繁體字也是占4個(gè)字節(jié)。
- utf8mb4:UTF-8編碼的完整實(shí)現(xiàn)。最多可支持4個(gè)字節(jié),所以,可以用來(lái)存儲(chǔ)emoji符號(hào)。
查閱資料,官方解釋?zhuān)?/p>
最后
Tips:如果有需要保存emoji符號(hào)的字段,記得一定要指定編碼為 utf8mb4 。
到此這篇關(guān)于一個(gè)關(guān)于MySQL指定編碼實(shí)現(xiàn)的小坑的文章就介紹到這了,更多相關(guān)MySQL指定編碼內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。