Objective c 目标C:未完全从UTF-8解码NSString
我正在查询一个返回JSON字符串为Objective c 目标C:未完全从UTF-8解码NSString,objective-c,ios,nsstring,Objective C,Ios,Nsstring,我正在查询一个返回JSON字符串为NSData的web服务器。字符串为UTF-8格式,因此它被转换为如下所示的NSString NSString *receivedString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding]; 然而,一些UTF-8转义仍然保留在输出的JSON字符串中,这会导致我的应用程序行为不稳定。类似于\u2019的内容仍保留在字符串中。我尽了一切努力来移除它们,并用
NSData
的web服务器。字符串为UTF-8格式,因此它被转换为如下所示的NSString
NSString *receivedString = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
然而,一些UTF-8转义仍然保留在输出的JSON字符串中,这会导致我的应用程序行为不稳定。类似于\u2019
的内容仍保留在字符串中。我尽了一切努力来移除它们,并用它们的真实角色替换它们
我能想到的唯一一件事是用他们的角色手动替换UTF-8转义的发生,但是如果有更快的方法,这是一个很大的工作
下面是一个错误解析字符串的示例:
{"title":"The Concept, Framed, The Enquiry, Delilah\u2019s Number 10 ","url":"http://livebrum.co.uk/2012/05/31/the-concept-framed-the-enquiry-delilah\u2019s-number-10","date_range":"31 May 2012","description":"","venue":{"title":"O2 Academy 3 ","url":"http://livebrum.co.uk/venues/o2-academy-3"}
如您所见,URL尚未完全转换
谢谢,语法
\u2019
不是UTF-8编码的一部分,它是一种特定于JSON的语法NSString
解析UTF-8,而不是JSON,因此不理解它
您应该使用NSJSONSerialization
解析JSON,然后从JSON的输出中提取所需的字符串
例如:
NSError *error = nil;
id rootObject = [NSJSONSerialization
JSONObjectWithData:receivedData
options:0
error:&error];
if(error)
{
// error path here
}
// really you'd validate this properly, but this is just
// an example so I'm going to assume:
//
// (1) the root object is a dictionary;
// (2) it has a string in it named 'url'
//
// (technically this code will work not matter what the type
// of the url object as written, but if you carry forward assuming
// a string then you could be in trouble)
NSDictionary *rootDictionary = rootObject;
NSString *url = [rootDictionary objectForKey:@"url"];
NSLog(@"URL was: %@", url);
你能给出一个没有被正确解析的字符串的例子吗?您可能需要发布一个十六进制的实际字节转储来清除。这绝对解决了这个问题,事实证明我遇到的问题是将该符号作为NSString传递给另一个方法。我可以作为一个单独的问题再次提出。