記錄一下:乙個英文本母佔位1個位元組,乙個漢字佔位2個位元組,乙個位元組8位(二進位制)
結合api程式分析,推測是表情存入discuz_cn.pre_forum_post資料庫時發生異常。
為了測試方便,在本機電腦的mysql資料庫中新建同樣型別的資料庫表(列名及型別也一樣)如下所示:
執行插入操作:插入失敗,報錯資訊如下所示:
初步判斷是表情存入資料庫時,發生異常。查閱資料分析發現:普通字串或表情都是佔位3個位元組,而utf8每個位元組最多3個位元組,但是移動端的表情符號佔位是4個位元組,普通的utf8就不夠用了。應該設定字符集為utf8mb4, 該字符集每個位元組最多4個位元組,剛好可以儲存。
解決方案:修改相應的utf8字符集為utf8mb4
(1).修改表字段字符集為utf8mb4:
alter table emoji modifymessage
text character set utf8mb4 collate utf8mb4_unicode_ci;
修改後,再執行插入命令依然報錯。
(2).再去修改表字符集為utf8mb4:
alter table emoji convert to character set utf8mb4 collate utf8mb4_unicode_ci;
修改後,再執行插入命令依然報錯。
(3).再修改資料庫的字符集為utf8mb4
mysql> set character_set_client= utf8mb4;
mysql> set character_set_connection= utf8mb4;
mysql> set character_set_database= utf8mb4;
mysql> set character_set_results= utf8mb4;
mysql> set character_set_server= utf8mb4;
插入資料庫成功
『message』字符集改為了utf8mb4.
emoji表情多終端適配解決方案
emoji,也叫顏表情是日本在無線通訊中所使用的視覺情感符號,由栗田穰崇 shigetaka kurita 創作,並在日本網路及手機使用者中流行。自蘋果公司發布的ios5輸入法中加入了emoji後,這種表情符號開始席捲全球,普遍應用於各種手機簡訊和社交網路中。ios8.3中,加入了同性家庭 以及對不...
MySQL無法儲存emoji表情方案
經過一番搜尋之後終於解決了問題。原文可參考 1.mysql無法儲存emoji表情問題 2.mysql存emoji表情報錯處理 如果在新建表之前就改變資料庫的編碼,建表的時候好像可以自己轉變過來吧 檢視字符集編碼 show variables like char 更改資料庫編碼 alter datab...
使用EMOJI表情
由於ios系統支援日文中的字塊編碼,所以在uilable,uitextfield,uialertview等控制項中使用emoji表情編碼 emoji就是表情符號 詞義來自日語 e moji,moji在日語中的含義是字元 例如 plain view plain copy nsstring s nsst...