Home > iPhone SDK / Cocoa / Objective-C > CocoaでURLエンコード

CocoaでURLエンコード

NSStringを指定した文字コードでURLエンコードします。

一瞬 stringByAddingPercentEscapesUsingEncoding: のみで事足りそうに思うのですが、それだけだと下記コード中の escapeChars にある文字達が残ってしまいます。

@implementation NSString (URLEncoding)
 
-(NSString *)stringByURLEncoding:(NSStringEncoding)encoding
{
  NSArray *escapeChars = [NSArray arrayWithObjects:
             @";" ,@"/" ,@"?" ,@":"
            ,@"@" ,@"&" ,@"=" ,@"+"
            ,@"$" ,@"," ,@"[" ,@"]"
            ,@"#" ,@"!" ,@"'" ,@"("
            ,@")" ,@"*"
            ,nil];
 
  NSArray *replaceChars = [NSArray arrayWithObjects:
              @"%3B" ,@"%2F" ,@"%3F"
             ,@"%3A" ,@"%40" ,@"%26"
             ,@"%3D" ,@"%2B" ,@"%24"
             ,@"%2C" ,@"%5B" ,@"%5D"
             ,@"%23" ,@"%21" ,@"%27"
             ,@"%28" ,@"%29" ,@"%2A"
             ,nil];
 
  NSMutableString *encodedString = [[[self stringByAddingPercentEscapesUsingEncoding:encoding] mutableCopy] autorelease];
 
  for(int i=0; i<[escapeChars count]; i++) {
    [encodedString replaceOccurrencesOfString:[escapeChars objectAtIndex:i]
                                   withString:[replaceChars objectAtIndex:i]
                                      options:NSLiteralSearch
                                        range:NSMakeRange(0, [encodedString length])];
  }
 
  return [NSString stringWithString: encodedString];
}
 
@end

# なんでもかんでもカテゴリにすればよいというものではないのは分かっているのですが、つい…。

関連する投稿

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://iphone-dev.ensites.net/archives/573/trackback
Listed below are links to weblogs that reference
CocoaでURLエンコード from iPhoneアプリ開発ブログ

Home > iPhone SDK / Cocoa / Objective-C > CocoaでURLエンコード

Search
Feeds
Meta

Return to page top