
奮斗的七月
之前寫的一篇iOS限制輸入表情(emoji),因為輸入表情之后,服務(wù)器返回系統(tǒng)異常,所以就限制了輸入表情。但是這種方法終究不是一個最好的解決辦法,如果需求是要求可以輸入表情,并且要展示出來呢。所以我們要另辟新徑。
我們在請求有中文鏈接的網(wǎng)址時會請求失敗, 正常的處理是先把含有中文的網(wǎng)址進行編碼后在請求就會成功, 因此,我們保存表情時也可以你用這種辦法;
注意: 這里在你把轉(zhuǎn)碼后的操作發(fā)給服務(wù)器后, 需要做的一個額外操作就是, 你再從服務(wù)器去回來顯示時, 需要反轉(zhuǎn)一下之前的編碼才能正常顯示出表情符號, 否則就是一堆亂碼, 如: 123%F0%9F%98%94%E2%9C%8C%EF%B8%8F%F0%9F%98%A9%F0%9F%98%B3;
1、把含有表情的字符串進行編碼后再發(fā)送給服務(wù)端:
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)urlString, (CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]", NULL, kCFStringEncodingUTF8);
2、對從服務(wù)器獲取回來含有表情的字符串進行反轉(zhuǎn)后顯示在頁面上:
NSString *showText = [serverString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
3、把編碼的字符串反轉(zhuǎn)之后的顯示效果圖:

奮斗的七月