【发布时间】:2013-06-20 19:19:30
【问题描述】:
我整天都在尝试解决我的问题,但没有成功。我知道这可能很愚蠢,因为我对 OBjective C 还是新手,所以这是我的问题。
我正在尝试将 unicode Emoji Characters 实现为 UILabel。所以,让我们一步一步来吧。
这是我正在使用的 Json 字符串:
"body":"\\U0001f61f \\U0001f62e \\U0001f621"
如您所见,即时使用的 Json 序列化器转义了 unicode。我怀疑这是我的主要问题。
我正在像这样检索数据:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
NSString *concat=[NSString stringWithFormat:@"MYURL?ID=%@",_TID];
NSURL *url = [NSURL URLWithString:concat];
NSData *jsonData=[NSData dataWithContentsOfURL:url];
dispatch_async(dispatch_get_main_queue(), ^{
if (jsonData!=nil) {
newX= [[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves error:nil]mutableCopy];
pageCounter=2;
[self.topicView reloadData];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; }
[loadingView
performSelector:@selector(removeView)
withObject:nil
afterDelay:1];
});
});
一段时间后,数据被调用并添加到 UILabel。
UILabel *emo=(UILabel*)[Tcell viewWithTag:6];
NSString*body=[[[newX objectAtIndex:indexPath.row] valueForKey:@"body"] mutableCopy];
emo.text=body;
这只是给我 \U0001f61f \U0001f62e \U0001f621 作为文本。我知道这可能只是一个编码问题,但我不知道从哪里解决这个问题。
任何帮助将不胜感激。 :)
【问题讨论】:
-
标签设置成什么字体?
-
您需要确定谁首先将 Emoji 字符编码为“\U0001f61f”,然后谁是双转义斜线。它必须是您服务器的一部分。例如,如果您只想发送第一个表情符号,并且您使用 UTF-8 作为输出编码(很可能),正文应该看起来像“\uf09f\u989f”(注意小写 u,并且有两个 UTF-8 字符用于一个表情符号)。
-
我将这些字符手动存储在 SQL 中,因为它们需要与其他表情符号配对。 ASP.net 处理我认为我正确编码的 JSON 请求。
-
yonosoytu 是正确的。根据JSON RFC,不属于“基本多语言平面”的字符可以使用 UTF-16 代理对进行转义。对于
U+U0001f61f,那就是\uD83D\uDE1F。然后这将被 NSJSONSerialization 正确解码。所以在我看来,您的服务器对表情符号的编码不正确。 -
@Anthem127:根据你的图片,有些表情正确显示,有些是
<0001f60a>,有些是\U0001f61f。那是对的吗?你能显示jsonData的NSLog输出吗?
标签: asp.net objective-c ios6 unicode