AFNetworking:使用AFJSONRequestOperation和UTF8文件

时间:2013-01-10 10:58:36

标签: json utf-8 character-encoding afnetworking

我正在尝试使用AFNetworking异步获取JSON。

我有UTF8的json文件编码,AFJSONRequestOperation用UTF8代码返回dictionnary:

éphémère   -->   \U00c3\U00a9ph\U00c3\U00a9m\U00c3\U00a8re

有没有办法让UTF8与AFJSONRequestOperation一起运作良好?

使用AFJSONRequestOperation存在一个问题:他无法读取带有BOM的UTF8文件。

这是我的代码:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];
    AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                         JSONRequestOperationWithRequest:request
                                         success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
                                         {

                                             NSLog(@"JSON: %@", JSON);
                                         } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON)
                                         {
                                             NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);

                                         }];
    [operation start];

在此之前,我使用的是JSONKit,效果很好(charset + BOM)!但我需要进行异步调用。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这是NSLog的问题,您的JSON有效,您可以在其中检索密钥的值并查看其有效字符。

我使用此代码使我的响应JSON更具可读性:

-(NSString*)stringByReplacingUnicodePoint:(id)jsonObj
{
    NSData *data = [NSJSONSerialization dataWithJSONObject:jsonObj options:0 error:nil];
    NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    return result;
}

-(void)networkResponse:(id)JSON
{
    NSLog(@"JSON: %@", [self stringByReplacingUnicodePoint: JSON]);
}