Проблема с XML-ответом - PullRequest
0 голосов
/ 27 мая 2010

Я пытался прочитать данные ответа из API погоды Google, но немецкие умлауты не отображаются правильно. Вместо «ö» я получаю «^».

Я думаю, что проблема в этих двух строках кода:

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

Как я могу получить данные из resultElement без stringValue?

PS: я использую TouchXML для разбора xml

1 Ответ

2 голосов
/ 28 мая 2010

Вы должны использовать NSURLConnection для получения ваших данных, я полагаю. Когда вы получаете данные, вы можете преобразовать их в строку NSString, используя соответствующую кодировку. Например.

- (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];
    }

}

Здесь xmlResponse - это NSMutableString, которую вы можете передать вашему анализатору. Я использовал NSISOLatin1 кодирование. Вы можете проверить другие виды кодирования и посмотреть, что дает вам символы правильно (NSUTF8StringEncoding должен делать это, я полагаю). Вы можете проверить в документе API список поддерживаемых кодировок.

...