2012-01-01 14 views

cevap

1

RFC vs kısmi kaçmalarına arkasındaki mantık ne gerek: http://iosdevelopertips.com/networking/a-better-url-encoding-method.html http://www.cocoanetics.com/2009/08/url-encoding/

bırakmak için gerekçe Bazı karakterler dışarıdadır ... fonksiyon tanımının şu olduğu söylenir: 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.

Tam olarak doğru olması için + ve & URL'de yasal karakterlerdir, oysa boşluk yoktur. Bu nedenle, yöntem bir boşluktan doğru şekilde kaçacaktır, ancak + ve &'u sağlam bırakır.

Okuma RFC2396 http://www.ietf.org/rfc/rfc2396.txt - tanımlı ve ayrılmamış bir dizi karakter tanımlanmış. Tahminimce, bu karakterlerden hiçbiri stringByAddingPercentEscapesUsingEncoding tarafından kaçtı.

+0

Şimdi bu belgeyi okumak için birkaç dakikaya ihtiyacım var ... :) –

5

CFStringRef'i kullanırken, dönüştürmelerdeki belleği silmemeye dikkat edin. Latin karakterleri ve diğerleriyle çalışmak için geldim. Tüm URL'mden değil, parametrelerimden kaçmak için kullanıyorum. senin kullanım durumuna bağlı olarak, "escapeChars" umarım bu yardımcı olur

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

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

karakterleri eklemek veya kaldırmak gerekebilir.