2016-11-14 283 views
0

我有以下字符串,我想用emojies和新行適當地顯示在一個UILabel。我也想用drawInRect方法繪製它。如何正確轉換/編碼/解碼?解碼字符串與表情符號字符,如 ud83d

此字符串將改變運行所以應該顯示任何Unicode字符/表情符或特殊字符,如\ n或&

我很抱歉,我不知道正確的術語使用問這個問題。這使我很難在網上找到答案。我對這個主題的瞭解很少。

\ ud83d \ ude02 \ ud83d \ ude02 \ ud83d \ ude02 \ ud83d \ ude02 \ ud83d \ ude02 \ ud83d \ ude05 \ ud83d \ ude06 \ u0db8 \ u0da0 \ u0d82 \ u0d91 \ u0d9a \ u0dca \ u0d9a \ n#set_with_machan \ nkunuharapa娜\ N#按 @lankan_machan \ nhttps://www.instagram.com/lankan_machan

編碼的文字看起來應該像這樣使用表情符號,Unicode字符&新的生產線後。 enter image description here

+1

我猜你試圖解碼轉義的Unicode字符。我不完全確定這是否會有所幫助,但快速搜索如何在目標-c中使用unicode字符我發現[this](http://stackoverflow.com/questions/7860867/converting-escaped-utf8-characters-回到原來的形式) – DanZimm

+0

@DanZimm非常感謝。我搜索了條款並找到了一個解決方案,編輯了一下。我會把它作爲答案 – NSGodMode

回答

0

我找到了解決方案並編輯了一下。這完全擺脫了unicode字符並正確顯示它們。也顯示新行。謝謝@DanZimm的幫助。

- (NSString*) unescapeUnicodeString2:(NSString*)string 
{ 
    NSString* esc1 = [string stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"]; 
    NSString* esc2 = [esc1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; 
    NSString* quoted = [[@"\"" stringByAppendingString:esc2] stringByAppendingString:@"\""]; 
    NSData* data = [quoted dataUsingEncoding:NSUTF8StringEncoding]; 

    NSString* unesc = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:NULL error:NULL]; 
    assert([unesc isKindOfClass:[NSString class]]); 
    return unesc; 
} 

找到解決方案here我不得不編輯它,因爲其中一個方法已被棄用。

相關問題