GBKコードを使用してNSDataをNSStringに変換

1143 ワード

iOSの開発では、NSDataとNSStringの相互回転に遭遇することがよくあります.これは難しくありません.既成の方法があります.NSStringがNSDataを回転するのは

NSString* str = @"teststring";
NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];

NSDataがNSStringに移行する場合、このdataデータが0で終わるのではなく、

NSData *data = ……;
NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];

dataが0で終わる場合、例えばc文字列から変換される場合は、次のような方法に変更します.これにより、最後の0もNSStringに変換することを避けることができます.

NSData *data = ……;
NSString *string = [NSString stringWithUTF8String:[data bytes]];

NSUTF 8 StringEncodingもNSASCIIStringEncodingもNSString.hで定義された常識は、他にもいくつかの符号化がありますが、この定数定義にはGBK符号化は含まれていません.GBK符号化を使用する必要がある場合は、自分で対応するencodingを得る方法を考えなければなりません.具体的には、次のようにします.

NSStringEncoding gbkEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString *string = [[NSString alloc] initWithData:data encoding:gbkEncoding];
NSData *data = [string dataUsingEncoding:gbkEncoding];