2010-05-27 3 views
0

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

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

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

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

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

+0

Укажите URL-адрес, с которого вы пытаетесь прочитать данные. – Jim

+0

#define GOOGLE_WEATHER_SERVICE @ "http://www.google.com/ig/api?weather=%@&hl=de" Это URL-адрес, но я уже тестировал URL-адрес. Xml-ответ корректен с помощью ö –

ответ

2

Вы должны быть с помощью 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-интерфейс для списка поддерживаемых кодировок.

Смежные вопросы