UILabel显示表情符号而不是他们的unicode值\ ueXXXX

时间:2011-09-30 15:21:00

标签: objective-c

我正在以XML格式从服务器检索值,服务器发送以下字符串: “这是一个很好的字符串与表情符号\ ue056 \ ue056 \ ue056 \ ue057 \ ue057 \ ue056 \ ue056”

我一直在努力让我的UILabel显示表情符号图标,而不是以下

\ ue056 \ ue056 \ ue056 \ ue057 \ ue057 \ ue056 \ ue056

我试过了

[chatText setText:[chatString stringByReplacingOccurrencesOfString:@"\\\\u" withString:@"\\u"]];

没多少运气。我绝望地做了以下事情:

[chatText setText:[[chatString cStringUsingEncoding:NSNonLossyASCIIStringEncoding] stringByReplacingOccurrencesOfString:@"\\\\u" withString:@"\\u"]];

注意:分配以下字符串可以解决问题:

[chatText setText:@"\ue056\ue056\ue056\ue057\ue057\ue056\ue056"];

2 个答案:

答案 0 :(得分:1)

看起来您需要浏览每个字符,并对每个表情符号字符使用stringWithFormat:@"%C"

// Loop through string by characters, and then do something like:
// NSString *emoji = [NSString stringWithFormat:@"%C", 16-bit Unicode character (unichar) here];
NSString *emoji = [NSString stringWithFormat:@"%C", 0xe415];
chatText.text = [chatText.text stringByAppendingString:emoji];

查看String Format Specifiers

答案 1 :(得分:0)

我已经构建了一个stringHandler类,它包含以下函数来克服这个问题,这几乎解决了我的问题:

+ (NSString *) mapEmojiFromServer:(NSString *) inString
{
    inString = [inString stringByReplacingOccurrencesOfString:@"\\" withString:@""];
    inString = [inString stringByReplacingOccurrencesOfString:[@"ue001" lowercaseString] withString:@"\ue001"];
.
.
.

    return inString;
}

在导航和滚动包含此2000行功能的页面时,我没有注意到除了IDE变得疯狂之外的性能问题

非常感谢你的帮助。