使用表情符号字符解码字符串,例如 \ud83d

问题描述 投票:0回答:2

我有以下字符串,我想用表情符号和新行在 UILabel 中正确显示它。我也想使用drawInRect方法来绘制它。如何正确地转换/编码/解码它们?

此字符串将在运行时更改,因此应显示任何 unicode 字符/表情符号或特殊字符,例如 或&

很抱歉,我不知道提出这个问题的正确术语。这让我很难在网上找到答案。我对这个话题的了解非常低。

\ud83d\ude02\ud83d\ude02\ud83d\ude02\ud83d\ude02\ud83d\ude02\ud83d\ude05\ud83d\ude06 \u0db8\u0da0\u0d82 \u0d91\u0d9a\u0dca\u0d9a #set_with_machan 库努哈拉帕纳 #跟随 @lankan_machan https://www.instagram.com/lankan_machan

编码后,文本应如下所示,包含表情符号、Unicode 字符和换行符。

objective-c
2个回答
1
投票

我找到了解决方案并对其进行了一些编辑。这个 un 完美地转义了 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;
}

在此处找到解决方案我必须对其进行编辑,因为其中一种方法已被弃用。


© www.soinside.com 2019 - 2024. All rights reserved.