如何在ios中对gbk进行base64解码?
首先下载在github上下载Base64的编解码第三方组件:
https://github.com/nicklockwood/Base64
下载后导入到项目中,如果你的文本是Utf-8编码的,解码直接调用方法:
- (NSString *)base64DecodedString { return [NSString stringWithBase64EncodedString:self]; }
即可完成解码操作。
但是对于其它编码,比如GBK,则回返回空。
通过查看源代码,发现编码部分已经被写死为:
return [[self alloc] initWithData:data encoding:NSUTF8StringEncoding];
所以,我们要对此方法进行拓展:
+ (NSString *)stringWithBase64EncodedString:(NSString *)string withEncoding:(NSStringEncoding)encoding { NSData *data = [NSData dataWithBase64EncodedString:string]; if (data) { return [[self alloc] initWithData:data encoding:encoding]; } return nil; } - (NSString *)base64DecodedString:(NSStringEncoding)encoding { return [NSString stringWithBase64EncodedString:self withEncoding:encoding]; }
GBK文本调用解码方法:
NSStringEncoding gbkEncoding =CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSLog(@"base64 %@",[str base64DecodedString:gbkEncoding]);
搞定!