问问题
1549 次
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 回答