Domanda

Ho provato a leggere i dati di risposta da Google Weather API, ma dieresi tedesche non vengono visualizzati correttamente. Invece di "ö" ottengo "^".

Credo che il problema sono quei due righe di codice:

CXMLElement *resultElement = [nodes objectAtIndex:0];
description = [[[[resultElement attributeForName:@"data"] stringValue] copy] autorelease];

Come posso ottenere dati da resultElement senza stringValue?

PS: io uso TouchXML per analizzare XML

È stato utile?

Soluzione

È necessario utilizzare un NSURLConnection per ottenere i dati suppongo. Quando si ricevono i dati è possibile convertirlo in un NSString utilizzando la codifica appropriata. Per esempio.

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    if(xmlResponse == nil){
        xmlResponse = [[NSMutableString alloc] initWithData:data encoding:NSISOLatin1StringEncoding]; 
    }
    else{
        NSMutableString *temp = [[NSMutableString alloc] initWithData:data encoding:NSISOLatin1StringEncoding];
        [xmlResponse appendString:temp];
        [temp release];
    }

}

Ecco xmlResponse è la NSMutableString che è possibile passare al parser. Ho usato codifica NSISOLatin1. È possibile controllare altri tipi di codifica e vedere quello che ti dà correttamente i caratteri (NSUTF8StringEncoding dovrebbe farlo suppongo) .È possibile controllare la documentazione delle API per un elenco delle codifiche supportate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top