2009-03-30 12 views
5

Une partie de ma requête http a 'espace' dans l'URL, mais elle n'est pas reconnue par l'iPhone. Je dois changer 'espace' en '% 20' chaque fois qu'il y a un 'espace' dans l'url. Maintenant, je dois envoyer un message tapé par l'utilisateur au serveur et il peut avoir autant d''espaces' que l'utilisateur. Il semble que je doive les remplacer tous. (StringByReplacingOccurrencesOfString)Question sur le caractère de NSString invalide dans l'URL sur l'iPhone

Convertir 'espace' en '% 20' est celui que je trouve occasionnellement. Ma question est de savoir lequel des autres personnages de NSString ne peut pas être utilisé directement par url sur iPhone?

Répondre

19

Je pense que cela est une meilleure approche:

NSString* escapedUrl = [originalUrl 
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

Si vous voulez comprendre comment fonctionne le codage URL, jetez un oeil à ce URL.

1

Voir RFC 2396 pour les détails sanglants complets. Les caractères suivants doivent être échappés:

 
Control characters (ASCII 00-1F and 7F) 
Space 
< 
> 
# 
% 
" 

Les caractères suivants sont peu judicieux d'utiliser sans échapper parce que certaines portes d'entrée et d'autres agents de transport sont connus pour parfois modifier ces caractères, ou ils sont utilisés comme délimiteurs:

{ } | \^[ ] `