我工作的一个iPhone应用程序,它允许人们与绘文字图标发送消息。 我在MySQL与字符集utf8mb4和整理utf8mb4_unicode_ci保存图标,所有表情符号图标在我的数据库正确保存。 然而,当我返回JSON返回给客户端(PHP json_encode),表情符号编码为这样的:“\ ud83d \ ude04”,和iPhone显示为一个正方形。 不过,如果我回来作为XML,表情符号图标不会成为unicode的是这样的:“\ ud83d \ ude04”,它将是图标。
我想知道,如果这是一个问题,我的服务器上,或我的客户端上。 如果是我的客户,怎么能对象C正确解码。
是否有人可以帮助?
谢谢
"\ud83d\ude04"
是用于JSON Unicode转义序列U+D83D U+DE04
,这是“代理对”为Unicode的U + 1F604(微笑的OPEN嘴和微笑的眼睛FACE)。
但NSJSONSerialization
正确解码这一点,因为可以在下面的例子中可以看出:
const char *jsonString = "{ \"emoji\": \"\\ud83d\\ude04\" }";
NSLog(@"JSON: %s", jsonString);
NSData *jsonData = [NSData dataWithBytes:jsonString length:strlen(jsonString)];
NSError *error;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
self.myLabel.text = [jsonDict objectForKey:@"emoji"];
NSLog(@"Emoji: %@", self.myLabel.text);
输出:
JSON: { "emoji": "\ud83d\ude04" }
Emoji: