Frage

Wir ziehen Inhalte von unserer Website mit XML/NSmutableurlRequest und manchmal durch den "lockigen" Stilstroph und die Zitate "eher" als "". NSmutableUrlRequest scheint diese zu hassen und verwandelt sie in die seltsame u00e2 u0080 u0099 String.

Gibt es etwas, das ich tun kann, um dies zu verhindern? Ich verwende die GET-Methode, also sollte ich es irgendwie sagen, dass sie UTF-8 verwenden soll? Oder fehlt mir etwas?

UIApplication* app = [UIApplication sharedApplication];
    app.networkActivityIndicatorVisible = YES;

    NSString *urlStr = [NSString stringWithFormat:@"%@",url];
    NSURL *serviceUrl = [NSURL URLWithString:urlStr];
    NSMutableURLRequest *serviceRequest = [NSMutableURLRequest requestWithURL:serviceUrl];
    [serviceRequest setHTTPMethod:@"GET"];

    NSURLResponse *serviceResponse;
    NSError *serviceError;

    app.networkActivityIndicatorVisible = NO;

    return [NSURLConnection sendSynchronousRequest:serviceRequest returningResponse:&serviceResponse error:&serviceError];
War es hilfreich?

Lösung

NSURLConnection Gibt ein zurück NSData Antwort. Sie können das nehmen NSData Antwort und verwandeln Sie es in eine Zeichenfolge. Dann nehmen Sie diese Zeichenfolge, wenden Sie sie wieder in a NSData Objekt, ordnungsgemäß utf-8 codiert es auf dem Weg und füttert es zu NSXMLParser.

Beispiel: (Annahme response ist der NSData Antwort von Ihrer Anfrage)

// long variable names for descriptive purposes
NSString* xmlDataAsAString = [[[NSString alloc] initWithData:response] autorelease];
NSData* toFeedToXMLParser = [xmDataAsAString dataUsingEncoding:NSUTF8StringEncoding];
NSXMLParser* parser = [[[NSXMLParser alloc] initWithData:toFeedToXMLParser] autorelease];
// now utilize parser...

Andere Tipps

Ich würde vorschlagen, diese Zeichen mithilfe von diesen Zeichen zu ersetzen stringByReplacingCharactersInRange:withString: die unerwünschten Saiten ersetzen.

NSString *currentTitle = @"Some string with a bunch of stuff in it.";

//Create a new range for each character.
NSRange rangeOfDash = [currentTitle rangeOfString:@"character to replace"];
NSString *location = (rangeOfDash.location != NSNotFound) ? [currentTitle substringToIndex:rangeOfDash.location] : nil;

if(location){
    currentTitle = [[currentTitle stringByReplacingOccurrencesOfString:location withString:@""] mutableCopy];
}

Ich habe dies in der Vergangenheit getan, um das gleiche Problem zu lösen, das Sie beschreiben.

Versuchen Sie, das StringByReplacingPercentesSuSusingCoding zu verwenden:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top