让我首先说我并不是特别想找到解决方案,只是寻找问题的根本原因。我正在尝试从 url 检索 JSON。在浏览器中,url 调用工作得很好,我可以毫无问题地看到整个 JSON。但是,在 x 代码中,当简单地使用 NSURLConnection 时,我正在获取数据字节,但我的 NSString 为空。
theString = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding];
在做了一些研究之后,我发现我可能试图使用错误的编码。我不确定 url 使用的是什么类型的编码,所以第一直觉我只是尝试了一些随机编码类型。
NSString* myString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSString* myString2 = [[NSString alloc] initWithData:data encoding:NSUTF16StringEncoding];
NSString* myString3 = [[NSString alloc] initWithData:data encoding:NSWindowsCP1252StringEncoding];
NSASCIIStringEncoding 和 NSWindowsCP1252StringEncoding 能够带回部分正确的 JSON。我能够在浏览器中查看的不是整个 JSON,而且有些字符有点乱,但它是一些东西。为了尝试更好地确定使用了什么编码,我决定使用以下方法来尝试通过查看返回的编码来确定它。
NSError *error = nil;
NSStringEncoding encoding;
NSString *my_string = [[NSString alloc] initWithContentsOfURL:url
usedEncoding:&encoding
error:&error];
我的 NSStringEncoding 值为 3221214344。每次运行应用程序时,这个数字都是一致的。我找不到任何甚至接近匹配的 NSStringEncoding 值。
我的最后一个问题是:iOS 不能使用此 url 使用的编码,是否有可能此 url 使用了多种类型的编码,或者我可能做错了什么?