iOS 10 emoji總結
- 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表情,所以遺留的連接符沒有通過校驗,造成的閃退