我正在尝试解析GET请求的JSON响应。当人物,拉丁没有问题。
然而,当他们没有拉丁时,消息不正确。我试过希腊而不是“πανος”我得到了“& pi;& alpha;& nu;& omicron;& sigmaf;”
我用来解析响应的代码是:
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"response %@", responseString);
// array from the JSON string
NSArray *results = [responseString JSONValue];
当我尝试使用ajax从网站上阅读回复时,一切都很好。尝试使用来自iphone的数据向应用程序服务器发送GET请求时也是如此。因此,当我将数据传输到服务器并从网站上读取时,一切都很好。当我尝试在应用程序中显示相同的数据时,“休斯顿我们遇到了问题”。
任何线索?
编辑:为了避免误解,这不是HTML的问题,我只是指出,对于某些读取,utf-8字符在这里被正确编码并自动编码,例如。 “& pi”将转换为“π”,但客观c似乎不会自行执行此操作
答案 0 :(得分:0)
查看Cocoanetics NSString + HTML类别和方法stringByReplacingHTMLEntities方法。您可以在以下网址找到它:
这里有很多HTML实体和相应的unicode字符。
答案 1 :(得分:0)
尝试使用此代码段:
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSString *decodedString = [NSString stringWithUTF8String:[responseString cStringUsingEncoding:[NSString defaultCStringEncoding]]];
NSLog(@"response %@", decodedString);
// array from the JSON string
NSArray *results = [decodedString JSONValue];
答案 2 :(得分:0)
我认为存在困惑。
π
是 HTML实体 ,与文本编码无关,如UTF8 / Latin。
阅读wikipedia了解有关...
的详细信息你需要一个解析器来解码这些实体,就像之前由Chiefly Izzy提到的那样:
NSString+HTML category and method stringByReplacingHTMLEntities
答案 3 :(得分:0)
我遇到了同样的问题,但是我通过更改JSON解析器解决了这个问题。我已经开始使用SBJSONParser了,现在我得到了合适的结果。这是代码片段,我用过
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
SBJSON *parser=[[SBJSON alloc]init];
NSArray *JSONData = (NSArray*)[parser objectWithString:returnString error:nil];