In iOS8 und früheren Versionen kann ich Folgendes verwenden:
NSString *str = ...; // some URL
NSString *result = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
in iOS9 stringByAddingPercentEscapesUsingEncoding
wurde ersetzt durch stringByAddingPercentEncodingWithAllowedCharacters
:
NSString *str = ...; // some URL
NSCharacterSet *set = ???; // where to find set for NSUTF8StringEncoding?
NSString *result = [str stringByAddingPercentEncodingWithAllowedCharacters:set];
und meine Frage ist: Wo finde ich benötigt NSCharacterSet
( NSUTF8StringEncoding
) für den richtigen Ersatz von stringByAddingPercentEscapesUsingEncoding
?
quelle
NSURLComponents
, die prozentuale Codierung für Sie zu verwenden.NSURLComponents
(mit jeder Komponente, die prozentual mit der entsprechenden codiertNSCharacterSet
ist), ist der richtige Weg.Für Ziel-C:
Wo finde ich Set für NSUTF8StringEncoding?
Es gibt vordefinierte Zeichensätze für die sechs URL-Komponenten und Unterkomponenten, die eine prozentuale Codierung ermöglichen. Diese Zeichensätze werden an übergeben
-stringByAddingPercentEncodingWithAllowedCharacters:
.Die Abwertungsnachricht lautet (Hervorhebung von mir):
Sie müssen also nur ein adäquates
NSCharacterSet
Argument angeben. Glücklicherweise gibt es für URLs eine sehr praktische KlassenmethodeURLHostAllowedCharacterSet
, die Sie wie folgt verwenden können:Beachten Sie jedoch Folgendes:
quelle
URLHostAllowedCharacterSet
arbeitet nicht für mich. Ich benutzeURLFragmentAllowedCharacterSet
stattdessen.ZIEL C
SWIFT - 4
Die folgenden nützlichen (invertierten) Zeichensätze sind:
quelle
+
. Pluszeichen in der Zeichenfolge werden also durcheinander gebracht, wenn sie in Abfrageparametern weitergegeben werden - auf der Serverseite als Leerzeichen `` behandelt.Ziel c
Dieser Code funktioniert für mich:
quelle
Swift 2.2:
quelle
Für Swift 3.0
Sie können
urlHostAllowed
CharacterSet verwenden.quelle
Es bedeutet, dass Sie nicht
https://xpto.example.com/path/subpath
die URL codieren sollen , sondern nur das, was nach der URL geht?
.Angenommen, es gibt Anwendungsfälle dafür in folgenden Fällen:
Wo
xxxxx
ist eine vollständig verschlüsselte URL.quelle
Hinzufügen zur akzeptierten Antwort. Unter Berücksichtigung dieses Hinweises
Die gesamte URL sollte nicht verschlüsselt werden:
quelle