1
4

2 回答 2

1

我希望这会对你有所帮助......我正在使用它,而e106是我的表情符号代码。

仅使用以下行替换内容行:

content = [NSString stringWithFormat:@"%C", 0xe106];
于 2012-10-16T07:02:57.030 回答
1

U+F44D是 "Private Use Area" 中的 Unicode 字符U+E000..U+F8FF,因此这可能不是您要显示的字符。

另一方面,U+1F44D是“竖起大拇指”,因此可能是您的 Web 服务没有为大于0xFFFF.

根据JSON RFC,不属于“基本多语言平面”的字符可以使用 UTF-16 代理对进行转义。对于U+1F44D字符,JSON Unicode 转义序列将是“\ud83d\udc4d”。

以下代码表明它通常可以工作:

const char *s = "{ \"content\": \"\\ud83d\\udc4d\", \"id\": 104, \"time\": 1350359055 }";
NSData *jsonData = [NSData dataWithBytes:s length:strlen(s)];
NSError *error;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
self.label.text = [jsonDict objectForKey:@"content"];

这会在标签中正确显示“竖起大拇指”。

但是您不必转义字符,Web 服务也可以只发送 UTF-8 序列。

于 2012-10-16T07:14:08.660 回答