iosでgbkをbase 64復号する

1484 ワード

どのようにiosでgbkをbase 64復号しますか?
まずgithubでBase 64をダウンロードするコーデックサードパーティコンポーネントをダウンロードします.
 
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]);

やった!