我正在创建一个应用程序,它将内容从UITextField发布到PHP脚本,然后存储在数据库中以便稍后阅读。我有一次与表情符号合作。
使用json,我会得到这样的回复:
content = "\Uf44d";
id = 104;
time = 1350359055;
在这个例子中,我使用了表情符号。但当我[dictionary objectForKey:@"content"]
时,会出现一个方框。
我想我需要转换为UTF-8。但我不完全确定。请帮忙!
答案 0 :(得分:1)
我希望这会对你有帮助......我正在使用这个, e106 是我的表情符号代码。
仅使用以下行内容行进行回复:
content = [NSString stringWithFormat:@"%C", 0xe106];
答案 1 :(得分:0)
U+F44D
是“私人使用区”U+E000..U+F8FF
中的Unicode字符,因此可能不是您要显示的字符。
另一方面,U+1F44D
是“THUMBS UP SIGN”,因此可能是您的Web服务没有为大于0xFFFF
的Unicode字符创建正确的JSON响应。
根据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"];
这会在标签中正确显示“THUMBS UP SIGN”。
但是你不必转义字符,Web服务也可以只发送UTF-8序列。