GBKコードを使用してNSDataをNSStringに変換
1143 ワード
iOSの開発では、NSDataとNSStringの相互回転に遭遇することがよくあります.これは難しくありません.既成の方法があります.NSStringがNSDataを回転するのは
NSDataがNSStringに移行する場合、このdataデータが0で終わるのではなく、
dataが0で終わる場合、例えばc文字列から変換される場合は、次のような方法に変更します.これにより、最後の0もNSStringに変換することを避けることができます.
NSUTF 8 StringEncodingもNSASCIIStringEncodingもNSString.hで定義された常識は、他にもいくつかの符号化がありますが、この定数定義にはGBK符号化は含まれていません.GBK符号化を使用する必要がある場合は、自分で対応するencodingを得る方法を考えなければなりません.具体的には、次のようにします.
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];