2012-01-01 18 views

risposta

1

Alcuni buoni categorie sono state create per fare proprio quello che vi serve: http://iosdevelopertips.com/networking/a-better-url-encoding-method.html http://www.cocoanetics.com/2009/08/url-encoding/

Il razionale per lasciare certi personaggi fuori è oltre me ... tranne per dire che la definizione della funzione è: Returns a representation of the receiver using a given encoding to determine the percent escapes necessary to convert the receiver into a legal URL string.

Per essere completamente corretti, + e & sono caratteri legali all'interno di un URL, mentre uno spazio non lo è. Quindi il metodo uscirà correttamente da uno spazio, ma lascia + intatto e & intatto.

Lettura RFC2396 http://www.ietf.org/rfc/rfc2396.txt - è definito un set di caratteri riservati e non riservati. La mia ipotesi è che nessuno di questi personaggi sia sfuggito da stringByAddingPercentEscapesUsingEncoding.

+0

Ora ho solo bisogno di pochi minuti per leggere quel documento ... :) –

5

Fare attenzione a non perdere memoria nelle conversioni quando si utilizza CFStringRef. Ecco cosa mi è venuto in mente per lavorare con personaggi latini e altri. Lo uso per sfuggire ai miei parametri, non all'intero URL. A seconda del caso d'uso, potrebbe essere necessario aggiungere o rimuovere caratteri da "escapeChars"

CFStringRef escapeChars = (CFStringRef)@"%;/?¿:@&=$+,[]#!'()*<>¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ \"\n"; 

NSString *encodedString = (__bridge_transfer NSString *) CFURLCreateStringByAddingPercentEscapes(NULL, (__bridge_retained CFStringRef) url, NULL, escapeChars, kCFStringEncodingUTF8); 

Spero che questo aiuti.

Problemi correlati