0

URL から XML をダウンロードするために、このメソッドを作成しました。問題はエンコーディング文字です。

-(void) scaricamentoXML{
    /*Save XML IN LOCALE*/
    NSString* docsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSLog(@"Doc dir:  %@:",docsDir);
    //dichiaro il file locale in cui salvare i dati XML
    NSString* fileToDownload = @"provaXML.xml";

    NSString *hostURLString = @"http://demo.gigamips.com/rss.php?authkey=12345";
    NSURL *xmlURL = [NSURL URLWithString:hostURLString];
    NSLog(@"xmlURL = %@", xmlURL);
    //gestione codifica UTF-8
    NSError *error;
    NSString *dataString = [[NSString alloc] initWithContentsOfURL:xmlURL encoding:NSASCIIStringEncoding error:&error];
    NSLog(@"DataString = %@", dataString);
    //NSData *xml = [[NSData alloc]initWithContentsOfURL:xmlURL];
    NSData *xml = [dataString dataUsingEncoding:NSUTF8StringEncoding]; 
    //creo una stringa di appoggio in encoding UTF8 - verificare se funziona
    NSString *str =  [[NSString alloc] initWithData:xml encoding:NSUTF8StringEncoding];
    NSLog(@"NSData xml = %@", xml);
    //NSString *newStr = [[NSString alloc] initWithData:xml encoding:NSUTF8StringEncoding];
    //NSLog(@"newStr  = %@", newStr);
    NSString *filePath = [docsDir stringByAppendingPathComponent: fileToDownload];

    //[xml writeToFile: filePath atomically: NO];
    [str writeToFile: filePath atomically: NO];
    /*Save XML IN LOCALE*/


    /*SALVO LE IMMAGINI MINI IN LOCALE*/
    AuthParserImages *parser=[[AuthParserImages alloc]init];
    entryArray=[parser startParserLocale:@"provaXML"];
    GestioneImages *gi = [[GestioneImages alloc]init];
    for(int i =0; i< [entryArray count];i++){
        item=[entryArray objectAtIndex:i];
        [gi saveImageLocal:item.urlImageLow :item.id];
    }
    /*SALVO LE IMMAGINI MINI IN LOCALE*/


    /*CREA IL FILE GESTIONE NEW*/
    gp = [[GestionePlist alloc]init];
    [gp savePlist:@"begin"]; 
    /*CREA IL FILE GESTIONE NEW*/

    [self controlloXML];
    [activityIndicator stopAnimating];

}

' やアクセントの ù - à - ò などの特殊な文字が見当たりません。

これは Web サービスですhttp://demo.gigamips.com/rss.php?authkey=12345

4

2 に答える 2

0

問題は Web サービスにあります。UTF8 文字列エンコーディングでエンコードされたデータを受信して​​いません。

于 2012-07-17T07:17:02.843 に答える
0

http://demo.gigamips.com/rss.php?authkey=12345 の XML はUTF -8 でエンコードされていますが、正しい文字が使用されていません。たとえば、カーリー シングル クォート ' (U+2019) が表示されるはずの場所では、印刷できない制御文字である U+0092 が使用されます。

ドキュメントの作成者がWindows-1252で記述し、 latin-1であると想定するツールを使用して UTF-8 に変換したようです。

最初に作成者に適切な文字を使用するよう説得するか、コードを記述して制御文字を可能な代替文字 (つまり、U+0091 の代わりに U+2018、U+ の代わりに U+2019) に置き換えることができます。 0092、U+0093 の代わりに U+201C など..Windows-1252 の文字テーブルを参照として使用できます)

于 2012-07-17T12:45:00.450 に答える