Вопрос
Я пытался прочитать данные ответа из API Google Weather API, но немецкие умлаи не отображаются правильно. Вместо "Ö" я получаю "^".
Я думаю, что проблема в этих двух строках кода:
CXMLElement *resultElement = [nodes objectAtIndex:0];
description = [[[[resultElement attributeForName:@"data"] stringValue] copy] autorelease];
Как я могу получить данные из результатов без StringValue?
PS: я использую TouchXML для анализа XML
Решение
Вы должны использовать 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 Doc для списка поддерживаемых кодировков.