Dans iOS8 et les versions antérieures, je peux utiliser:
NSString *str = ...; // some URL
NSString *result = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
dans iOS9 stringByAddingPercentEscapesUsingEncoding
a été remplacé par stringByAddingPercentEncodingWithAllowedCharacters
:
NSString *str = ...; // some URL
NSCharacterSet *set = ???; // where to find set for NSUTF8StringEncoding?
NSString *result = [str stringByAddingPercentEncodingWithAllowedCharacters:set];
et ma question est: où trouver nécessaire NSCharacterSet
( NSUTF8StringEncoding
) pour un remplacement approprié de stringByAddingPercentEscapesUsingEncoding
?
la source
NSURLComponents
, qui peut gérer le codage en pourcentage pour vous.NSURLComponents
(avec chaque composant codé en pourcentage avec le correspondantNSCharacterSet
) est la bonne voie à suivre.Pour Objective-C :
où trouver ensemble pour NSUTF8StringEncoding?
Il existe des jeux de caractères prédéfinis pour les six composants et sous-composants URL qui permettent un codage en pourcentage. Ces jeux de caractères sont transmis à
-stringByAddingPercentEncodingWithAllowedCharacters:
.Le message d'obsolescence dit (c'est moi qui souligne):
Il vous suffit donc de fournir un
NSCharacterSet
argument adéquat . Heureusement, pour les URL, il existe une méthode de classe très pratique appeléeURLHostAllowedCharacterSet
que vous pouvez utiliser comme ceci:Sachez cependant que:
la source
URLHostAllowedCharacterSet
est NE FONCTIONNE PAS POUR MOI. J'utilise à laURLFragmentAllowedCharacterSet
place.OBJECTIF C
SWIFT - 4
Les jeux de caractères suivants sont utiles (inversés):
la source
+
. Ainsi, les signes plus dans la chaîne seront gâchés s'ils sont passés dans les paramètres de requête - traités comme un espace `` côté serveur.Objectif c
ce code fonctionne pour moi:
la source
Swift 2.2:
la source
Pour Swift 3.0
Vous pouvez utiliser
urlHostAllowed
characterSet.la source
Cela signifie que vous n'êtes pas censé encoder le
https://xpto.example.com/path/subpath
de l'url, mais seulement ce qui suit le?
.Supposé, car il existe des cas d'utilisation pour le faire dans des cas tels que:
Où
xxxxx
est une URL entièrement codée.la source
Ajout à la réponse acceptée. Prenant en considération cette note
l'URL entière ne doit pas être encodée:
la source