В настоящее время я пытаюсь отправить некоторый JSON, содержащий смайлики, в API Python. Я попытался передать NSJSONSerialization напрямую строку, содержащую смайлики, из моего UITextField, но сериализатор аварийно завершил работу без объяснения причин. После этого я попытался преобразовать формат и получил что-то вроде этого:
NSString *uniText = mytextField.text;
NSData *msgData = [uniText dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *goodMsg = [[NSString alloc] initWithData:msgData encoding:NSUTF8StringEncoding] ;
Это в основном работает, за исключением того, что полученный UTF-8 является своего рода двойным «экранированием», что приводит к следующему:
"title":"\\ud83d\\udc8f\\ud83d\\udc8f\\ud83d\\udc8f\\ud83d"
Любые предложения, как это исправить?
NSNonLossyASCIIStringEncoding
. - person Brad Allred   schedule 22.05.2014NSNonLossyASCIIStringEncoding
, используйтеNSUTF32LittleEndianStringEncoding
. emoji находятся в UTF Plane 1 и, таким образом, представляют собой 21-битные кодовые точки. - person zaph   schedule 22.05.2014NSNonLossyASCIIStringEncoding
наNSUTF32LittleEndianStringEncoding
, запустите код и опубликуйте вывод. - person zaph   schedule 22.05.2014NSLog(@"uniText utf-32: %@", [uniText dataUsingEncoding:NSUTF32LittleEndianStringEncoding]);
и опубликуйте. - person zaph   schedule 23.05.2014