Вопрос

Я пытался прочитать данные ответа из 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 для списка поддерживаемых кодировков.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top