iOS 10 emoji 與 ZWJ

iOS 10 emoji總結
  1. emoji 中表情包含很多,其中最復雜的就是各種帶人的組合表情,什么一家四口,一家三口,相親相愛。 如果你細心一點兒就會發現,其實這些表情都是單個emoji表情拼接而成的。
    2.\U200d 如果你為了兼容數據庫而過濾掉了部分emoji表情,那應該對這個Unicode不陌生,它會出現在你過濾后的結果中,成片成片出現,但是你有沒有想過他到底是什么呢

維基百科 :https://en.wikipedia.org/wiki/Zero-width_joiner

零寬連字 即\U200d的unicode編碼 ,全稱是Zero Width Joiner,簡稱“ZWJ”,是一個不打印字符,放在某些需要復雜排版語言(如阿拉伯語、印地語)的兩個字符之間,使得這兩個本不會發生連字的字符產生了連字效果。而在emoji中,充當的就是連接作用。emoji中復雜的表情(如下表)。

emoji 對應Unicode編碼 表情組成
??????????? \ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66 ?? Man, ?? Woman, ?? Boy and ?? Bo
??????????? \ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69 ?? Woman, ? Heavy Black Heart, ? Variation Selector-16, ?? Kiss Mark and ?? Woman
???????? \ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66 ?? Man, ?? Woman and ?? Bo

在Unicode的對照表中我們發現,\u200d是不代表任何意義的。


Paste_Image.png

我遇到的問題:在開發過程中,由于后臺服務器數據庫不支持部分emoji,所以進行了過濾,但是好巧不巧的沒有過濾\u200d這個字符。在iOS10之前的系統中,是不會有問題的。但是我們app的用戶在升級的iOS10 之后,由于\u200d的問題造成了閃退。推斷是iOS10 對emoji進行了校驗。對于\u200d字符進行了檢驗處理。由于我們只過濾的單個emoji表情,所以遺留的連接符沒有通過校驗,造成的閃退

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容