wake-up-neo.net

URL Eine Zeichenfolge kodieren

ich empfange ein Json-Datenobjekt und extrahiere dann eine Zeichenfolge daraus 

NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:data
                                                               options:0
                                                                 error:nil];
NSString *country=jsonDictionary[@"address"][@"country"];

dann versuche ich, die Zeichenfolge für eine URL geeignet zu machen 

NSString *newCountryString = [country stringByReplacingOccurrencesOfString:@" "  
   withString:@"%%20"];

aber es funktioniert nicht 

wenn ich den newCountryString hart codiert hätte, würde er funktionieren, warum ist das so?

15
B.I.A

Benutze das - 

NSString *newCountryString = [country stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

Dieser Code gibt eine Darstellung des Empfängers mit einer bestimmten Codierung zurück, um die prozentualen Ausweichvorgänge zu bestimmen, die erforderlich sind, um den Empfänger in eine zulässige URL-Zeichenfolge umzuwandeln.

weitere Informationen finden Sie unter: https://developer.Apple.com/documentation/foundation/nsstring/1415058-stringbyaddingpercentescapesusin

Edit - StringByAddingPercentEscapesUsingEncoding ist in iOS 9 veraltet. Verwenden Sie stattdessen Folgendes

[country stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]

Swift 3 -

country.addingPercentEncoding( withAllowedCharacters: .urlHostAllowed)

weitere Informationen erhalten Sie unter: https://developer.Apple.com/documentation/foundation/nsstring/1411946-stringbyaddingpercentencodingwit?language=objc

34
Akshay Nalawade

Als Variante können Sie die Methode unten verwenden:

- (NSString *)URLEncodeStringFromString:(NSString *)string
{
 static CFStringRef charset = CFSTR("[email protected]#$%&*()+'\";:=,/?[] ");
 CFStringRef str = (__bridge CFStringRef)string;
 CFStringEncoding encoding = kCFStringEncodingUTF8;
 return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, str, NULL, charset, encoding));
}
14

Die NSSString-Methode stringByAddingPercentEscapesUsingEncoding sollte Ihnen dabei helfen. Siehe auch Wie bereitet man eine NSURL aus einem NSString mit internationalen Zeichen vor?

0
Volker