Welche NSString-Encoding-Methode wird das Ampersand () Zeichen korrekt in entkommen?NSString-Methode zu Prozent Escape '&' für URL
bekommt die Leerzeichen (% 20) und andere Bösewichte aber ignoriert kaufmännische Und-Zeichen!?!
Welche NSString-Encoding-Methode wird das Ampersand () Zeichen korrekt in entkommen?NSString-Methode zu Prozent Escape '&' für URL
bekommt die Leerzeichen (% 20) und andere Bösewichte aber ignoriert kaufmännische Und-Zeichen!?!
Ampersands werden von dieser Methode nicht verarbeitet, da es sich um gültige Zeichen in einer URL handelt. Sie sollten vor diesem Aufruf wahrscheinlich besonders problematische Stücke Stück für Stück vorverarbeiten.
+1 für alliteration. –
Hier ist eine schöne Lösung für dieses von Bagonca blog genommen Problem Ihr NSStrings URL-Codierung:
+ (NSString *)urlEncodeValue:(NSString *)str
{
NSString *result = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8);
return [result autorelease];
}
hinzufügen CFBridgingRelease(
für ARC-Kompatibilität.
+ (NSString *)urlEncodeValue:(NSString *)str
{
NSString *result = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)str, NULL, CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8));
return result;
}
Das hat mein Problem gelöst. Die Antwort war schwer zu finden, weil ich nicht wusste, dass die Ursache Charaktere in meinem POST-Körper waren. Es schien, als ob es wegen der Größe meiner Datei war. Wenn Sie eine sendAsynchronousRequest senden und die Anforderung die Nutzlast beendet, überprüfen Sie die Codierung. Vielen Dank. – dwaz
Die akzeptierte Antwort nicht ganz richtig ist, ich glaube nicht, müssen Sie die Zeichenfolge nach Aufruf addPercentEscapesAndReplaceAmpersand
+ (NSString *) addPercentEscapesAndReplaceAmpersand: (NSString *) stringToEncode
{
NSString *encodedString = [stringToEncode stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
return [encodedString stringByReplacingOccurrencesOfString: @"&" withString: @"%26"];
}
Ja, aber das würde die Alliteration zerstören! – lol
Das ist auch nicht richtig, wenn Sie eine Abfragezeichenfolge wie? Foo = bar & bar = foo erstellen und dann alle & s durch% 26 ersetzen. Es ist keine gültige Abfragezeichenfolge mehr. –
Sie möchten die Bar- und Foo-Werte und nicht die gesamte Abfragezeichenfolge verarbeiten. – s1mm0t
Ampersand ist ein gültiges Zeichen in URLs verarbeiten. "www.example.com? a = 5 & b = 7' –
ich weiß..aber es ist meine Abfrage Parameter zu verwirren, so müssen Vorkommen von & in Werten" vor dem Hinzufügen zu Abfrage String entfernen. – Meltemi