SORU
6 AĞUSTOS 2010, Cuma


Objective-c iPhone yüzde bir dize kodlamak?

Yüzde objective-c nasıl bu mektuplar için özel olarak kodlanmış bir dize, almak istiyorum?

Reserved characters after percent-encoding
!   *   '   (   )   ;   :   @   &   =       $   ,   /   ?   #   [   ]
! * ' ( ) ; : @ & = + $ , / ? # [ ]

Percent-encoding wiki

Bu dize ile test ve eğer iş yaparsam bakın:

myURL = @"someurl/somecontent"

Dize gibi görünmek istiyorum:

myEncodedURL = @"someurl/somecontent"

Ama çalışmıyor stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding ile zaten denedim, sonuç yine özgün dize aynıdır. Tavsiye lütfen.

CEVAP
28 Kasım 2013, PERŞEMBE


İOS 7 SDK şimdi tüm karakterler belirli izinli olanlar hariç kaçtı istediğinizi belirtin izin yokstringByAddingPercentEscapesUsingEncoding daha iyi bir alternatif vardır. Eğer kesimlerinde URL kadar bina varsa: iyi çalışıyor

NSString * unescapedQuery = [[NSString alloc] initWithFormat:@"?myparam=%d", numericParamValue];
NSString * escapedQuery = [unescapedQuery stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSString * urlString = [[NSString alloc] initWithFormat:@"http://ExampleOnly.com/path.ext%@", escapedQuery];

URL diğer parçaları değişkenler olacak daha az sıklıkta olsa da, bu NSURLUtilities kategorisinde sabitleri vardır:

[NSCharacterSet URLHostAllowedCharacterSet]
[NSCharacterSet URLUserAllowedCharacterSet]
[NSCharacterSet URLPasswordAllowedCharacterSet]
[NSCharacterSet URLPathAllowedCharacterSet]
[NSCharacterSet URLFragmentAllowedCharacterSet]

[NSCharacterSet URLQueryAllowedCharacterSet] içerirtümkarakterleri izin sorgu bölümü URL (kısmı ile başlayan ? önce # bir parça varsa) dahil ? & = karakterler, kullanılan sınırlandırmak için parametre adları ve değerleri. Sayısal değer ile sorgu parametreleri için, bu karakterleri herhangi bir değişken sorgu dizesi oluşturmak için kullanılan değerleri dahil olabilir. Bu durumda, herbölümsorgu dizesi kaçmış olmalı, biraz daha fazla çalışma gerektirir.

NSMutableCharacterSet * URLQueryPartAllowedCharacterSet; // possibly defined in class extension ...

// ... and built in init or on first use
URLQueryPartAllowedCharacterSet = [[NSCharacterSet URLQueryAllowedCharacterSet] mutableCopy];
[URLQueryPartAllowedCharacterSet removeCharactersInString:@"& =?"]; // &, =, ?

// then escape variables in the URL, such as values in the query and any fragment:
NSString * escapedValue = [anUnescapedValue stringByAddingPercentEncodingWithAllowedCharacters:URLQueryPartAllowedCharacterSet];
NSString * escapedFrag = [anUnescapedFrag stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];
NSString * urlString = [[NSString alloc] initWithFormat:@"http://ExampleOnly.com/path.ext?myparam=%@#%@", escapedValue, escapedFrag];
NSURL * url = [[NSURL alloc] initWithString:urlString];

unescapedValue tüm URL, geri arama ya da yönlendirme gibi bile olabilir:

NSString * escapedCallbackParamValue = [anAlreadyEscapedCallbackURL stringByAddingPercentEncodingWithAllowedCharacters:URLQueryPartAllowedCharacterSet];
NSURL * callbackURL = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"http://ExampleOnly.com/path.ext?callback=%@", escapedCallbackParamValue]];

Not: kullanım yolu için daha fazla yüzde kaçar katacak çünkü bir sorgu dizesi ile bir URL için NSURL initWithScheme:(NSString *)scheme host:(NSString *)host path:(NSString *)path Yok.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BlackBoxTV

    BlackBoxTV

    7 Mayıs 2007
  • Just So

    Just So

    3 HAZİRAN 2007
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011