我正在通过以下方式将响应数据从Web请求转换为NSString:
NSData *data = self.responseData;
if (!data) {
return nil;
}
NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)[self.response textEncodingName]));
NSString *responseString = [[NSString alloc] initWithData:data encoding:encoding];
但是生成的字符串如下所示:
"birthday":"04\/01\/1990",
"email":"some.address\u0040some.domain.com"
我想要的是
"birthday":"04/01/1990",
"email":"some.address@some.domain.com"
没有反斜杠转义和unicode。最干净的方法是什么?
答案 0 :(得分:1)
您可以使用NSString的stringByReplacingCharactersInRange:withString:或stringByReplacingOccurrencesOfString:withString:替换(或删除)字符。
要删除(转换)unicode字符,请使用dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES
(来自this answer)。
对不起,如果以下内容与您的案件无关:就我个人而言,我会问自己,首先是哪些反斜杠来自哪里。例如,对于JSON,我知道另一边的某种JSON序列化程序escapes some characters(所以斜杠确实存在,在响应中,这不是Cocoa中的一些奇怪的错误) 。这样我就可以确定我必须处理哪些角色以及如何处理。或者也许我会使用some kind of library为我做这件事。
答案 1 :(得分:1)
响应似乎是JSON编码的。因此,只需使用JSON库(SBJson,JsonKit等)解码响应字符串即可获得正确的表单。