Saturday, May 9, 2015

[iOS] Sai dấu khi encode url hoặc gửi chuỗi lên server

Đôi khi gửi một chuỗi đc encode lên server bằng phương thức post, một số dấu ko đc hiển thị đúng

send: 2013-06-29T18:33:17+0000
receive: 2013-06-29T18:33:17 0000. //+ ---> " "

hoặc encode một chuỗi url ra kết quả không đúng. (&/+/khoảng trắng...)

Ta khắc phục điều này bằng hàm sau CFURLCreateStringByAddingPercentEscapes

#import "NSString+URLEncoding.h"
@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
    return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
               (CFStringRef)self,
               NULL,
               (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
               CFStringConvertNSStringEncodingToEncoding(encoding));
}
@end
Reference:
http://kiririmode.hatenablog.jp/entry/20110730/p1

http://stackoverflow.com/questions/17444876/ios-not-encoding-plus-sign-in-x-www-form-urlencoded-post-request

No comments:

Post a Comment