找出文件的字符编码而不结束

时间:2013-08-20 02:00:07

标签: ios encoding

下面的网址会下载一个没有包含总线和时间的扩展名的文件。数据在iPhone应用程序中获取,该应用程序显示称为mobitime的总线时间。问题是我无法找出数据的编码方式。有没有办法找出来?

谢谢!

http://d2.mobitime.se/cgi/mtc/sad?uuid=01b07052fa390ceb845405e3d0547f7e&r=4&id=191430&no=721&to=Odensbacken%20via%20Ekeby-Almby&lang=sv

1 个答案:

答案 0 :(得分:1)

我知道有两种技术:

  1. 您可以查看HTTP标头,看看它是否报告任何有用的内容:

    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
        if ([response isKindOfClass:[NSHTTPURLResponse class]]) {
            NSHTTPURLResponse *httpResponse = (id)response;
            NSLog(@"httpResponse.allHeaderFields = %@", httpResponse.allHeaderFields);
        }
    }];
    

    这些标题报告"Content-Type" = "text/plain";,显然情况并非如此。

  2. 有时您也可以使用usedEncoding方法之一的initWithContentsOfURL选项:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSStringEncoding encoding;
        NSError *error;
        NSString *string = [[NSString alloc] initWithContentsOfURL:url usedEncoding:&encoding error:&error];
    
        if (error)
            NSLog(@"%s: initWithContentsOfURL error: %@", __FUNCTION__, error);
    
        if (string)
            NSLog(@"encoding = %d", encoding);
    });
    

    但是报告错误(再次暗示这可能不是字符串编码)。

  3. 简而言之,我建议您联系该Web服务的提供商,并询问他们的格式。但是看看十六进制转储,我不认识格式。瞥了一眼,它看起来像二进制数据,而不是任何字符串编码。