SORU
10 Kasım 2011, PERŞEMBE


Objective-C url kodlama

Bu gibi bir NSString var:

http://www.

ama onu değiştirmek istiyorum

http://www.

Bunu nasıl yapabilirim?

CEVAP
10 Kasım 2011, PERŞEMBE


İstediğiniz karakterleri kaçmak için biraz daha fazla iş.

Code () iOS7 ve üzeri örnek:

NSString *unescaped = @"http://www";
NSString *escapedString = [unescaped stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];
NSLog(@"escapedString: %@", escapedString);

NSLog çıktı:

escapedString: http://www

Aşağıdaki yararlı URL kodlama karakter kümeleri

URLFragmentAllowedCharacterSet  "#%<>[\]^`{|}
URLHostAllowedCharacterSet      "#%/<>?@\^`{|}
URLPasswordAllowedCharacterSet  "#%/:<>?@[\]^`{|}
URLPathAllowedCharacterSet      "#%;<>?[\]^`{|}
URLQueryAllowedCharacterSet     "#%<>[\]^`{|}
URLUserAllowedCharacterSet      "#%/:<>?@[\]^`

Bir characterset tüm yukarıda birleştirerek oluşturma:

NSCharacterSet *URLCombinedCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@" \"#%/:<>?@[\\]^`{|}"] invertedSet];

Bir Base64 oluşturma

Base64 characterset: durumda

NSCharacterSet *URLBase64CharacterSet = [[NSCharacterSet characterSetWithCharactersInString:@"/ =\n"] invertedSet];

Swıft:

var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet())

Not: stringByAddingPercentEncodingWithAllowedCharacters UTF-8 karakter kodlama kodlamak gerek.

Ön iOS7 Temel kullanın
ARC İle Temel kullanarak:

NSString *escapedString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(
    NULL,
   (__bridge CFStringRef) unescaped,
    NULL,
    CFSTR("!*'();:@&= $,/?%#[]\" "),
    kCFStringEncodingUTF8));

YAY Olmadan Temel kullanarak:

NSString *escapedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
    NULL,
   (CFStringRef)unescaped,
    NULL,
    CFSTR("!*'();:@&= $,/?%#[]\" "),
    kCFStringEncodingUTF8);

Not: -stringByAddingPercentEscapesUsingEncoding, Bu durumda aynı dize döndüren bir şey kodlamak değil. doğru kodlamayı oluşturmaz

stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding 14 characrters kodlar:

`#%^{}[]|\"&;>lt artı yüzde olarak boşluk karakteri kaçtı.

testString:

" `~!@#$%^&*()_ -={}[]|\\:;\"'<,>.?/AZaz"  

encodedString:

" `~!@#$%^&*()_ -={}[]|\:;"'<,>.?/AZaz"  

Not: bu karakter kümesi ihtiyaçlarınızı karşılamak değilse, bunları gerektiği gibi değiştirin eğer düşünün.

RFC 3986 karakter kodlama gerektiren kodlama önek karakteri olduğu için eklenen % ():

"!#$&'()* ,/:;=?@[]%"

"Çekincesiz karakter" ayrıca kodlanır: . bazı

"\n\r \"%-.&;>lt \^_`{|}~"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • guillaume2111's channel

    guillaume211

    19 Kasım 2006
  • Mark Hyder

    Mark Hyder

    6 EKİM 2011
  • Phandroid

    Phandroid

    26 Ocak 2009