从NSData转换的NSString中删除unicode和反斜杠转义

我正在通过以下方式将来自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]; 

但是结果string如下所示:

 "birthday":"04\/01\/1990", "email":"some.address\u0040some.domain.com" 

我想要的是

 "birthday":"04/01/1990", "email":"some.address@some.domain.com" 

没有反斜杠转义和unicode。 最干净的方法是什么?

响应似乎是JSON编码的。 因此,只需使用JSON库(SBJson,JsonKit等)解码响应string即可获取正确的表单。

您可以使用NSString的stringByReplacingCharactersInRangereplace(或删除)字符:withString:或stringByReplacingOccurrencesOfString:withString:。

要删除(转换)unicode字符,请使用dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES (来自此答案 )。

如果以下情况与您的情况无关,我感到抱歉:就我个人而言,我会问自己,这些反斜杠是从哪里来的。 例如,对于JSON,我知道某种JSON序列化器在另一侧会转义一些字符 (所以斜杠确实存在,在响应中,这不是Cocoa中的一些奇怪的错误)。 这样我就可以确定哪些angular色必须处理以及如何处理。 或者也许我会用某种图书馆来为我做这件事。