URL chaîne de encode en ios défaut
-
26-10-2019 - |
Question
Je suis en train de coder une chaîne url dans mon application iOS 5 en utilisant ARC.
Voici comment je le fais:
- (NSString *)escape:(NSString *)text
{
return (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(__bridge CFStringRef)text, NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
}
Je puis appeler avec des données de test comme celui-ci:
NSLog([self escape:@"kalel///&&&???"]);
Mais la sortie que je reçois de la NSLog
est la suivante:
kalel0.0000000.0000000.00000022623F0.0000000.000000
Cela ne semble tout simplement pas juste, mais peu importe ce que je ne peux pas l'obtenir droit
La solution
Votre fonction escape
est très bien. Le problème est d'une manière que vous appelez NSLog
:
escape
produit la chaîne kalel%2F%2F%2F%26%26%26%3F%3F%3F
pour votre entrée. NSLog
interprète cette chaîne comme une chaîne de format et imprime des ordures comme nombres à virgule flottante juste après mot kalel
!
Vous devriez toujours appeler NSLog
avec une constante de chaîne comme premier argument, par exemple:.
NSLog(@"%@", [self escape:@"kalel///&&&???"]);
P.S. Vous avez une fuite de mémoire dans escape
--- vous devez return (__bridge_transfer NSString *)
que vous transférez RÉPARTIS objet CF à l'espace Objectif C.