U+F44D
은 "개인 사용 영역"U+E000..U+F8FF
에서 유니 코드 문자입니다 :
만
내용은 아래 라인 라인 replcare.
반면에 U+1F44D
은 "THUMBS UP SIGN"이므로 웹 서비스가 0xFFFF
이상의 유니 코드 문자에 대해 올바른 JSON 응답을 생성하지 않을 수 있습니다.
JSON RFC에 따르면 "Basic Multilingual Plane"의 일부가 아닌 문자는 UTF-16 서로 게이트 쌍을 사용하여 이스케이프 처리 할 수 있습니다. U+1F44D
문자의 경우 JSON 유니 코드 이스케이프 시퀀스는 "\ 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"];
이 레이블에 제대로 "엄지 손가락 기호"를 표시합니다.
문자를 이스케이프 할 필요는 없지만 웹 서비스는 UTF-8 시퀀스를 보낼 수도 있습니다.