這個問題,原因是utf-8編碼有可能是兩個、三個、四個位元組。emoji表情或者某些特殊字元是4個位元組,而mysql的utf8編碼最多3個位元組,所以資料插不進去。
我的解決方案是這樣的
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
修改後重啟mysql
命令:更改資料庫編碼:alter database caitu99 character setutf8mb4
collateutf8mb4_general_ci
;
alter table table_name convert to character set utf8mb4 collate utf8mb4_bin; (將table_name替換成你的表名)
然後就ok了。網上流傳的乙個版本增加了乙個步驟,就是把mysql環境變數將character_set_client,character_set_connection,character_set_database,character_set_results,character_set_server 都修改成utf8mb4,不過我沒有做這一步,也正常,所以可能是這一步是多餘的,如果需要改,則按照下面介紹做修改。
原文章
emjoy表情插入資料庫問題
最近發現專案的錯誤日誌在第三方登陸的時候報錯,研究後發現是使用者名稱直接賦予第三方的使用者名稱中包含emoji表情導致的 原因 普通的字串或者表情都是佔位3個位元組,所以utf8足夠用了,但是移動端的表情符號佔位是4個位元組,普通的utf8就不夠用了,為了應對無線網際網路的機遇和挑戰 避免 emoj...
mysql資料庫儲存表情
讓資料庫能存表情 1.設定資料表字符集 為utf8mb4 unicode ci 2.修改配置 mysql配置檔案,把以下這些配置加到原配置的末尾,寶塔上修改的方式如下 客戶端 資料的預設字符集 default character set utf8mb4 mysqld 服務端預設字符集 charact...
mysql資料庫儲存表情設定
1.修改my.ini mysqld character set server utf8mb4 2.在connector j的連線引數中,不要加characterencoding引數。不加這個引數時,預設值就時autodetect。3.將已經建好的表也轉換成utf8mb4 命令 alter table...