-2

下記のURLはバスステーションと時刻を含む拡張子なしのファイルをダウンロードします。データは、mobitime と呼ばれるバスタイムを表示する iPhone アプリで取得されます。問題は、データのエンコード方法がわからないことです。調べる方法はありますか?

ありがとう!

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

4

1 に答える 1

1

私が知っている2つのテクニックがあります:

  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);
    });
    

    しかし、それはエラーを報告します (これもまた、文字列エンコーディングではない可能性があることを示唆しています)。

要するに、その Web サービスのプロバイダーに連絡して、形式について尋ねることをお勧めします。しかし、16進ダンプを見ると、フォーマットがわかりません。一見すると、文字列エンコーディングではなく、バイナリ データのように見えます。

于 2013-08-20T05:06:44.247 に答える