NSString型における文字コード変換後のバイト列取得

Objective-Cのはなし.
UTF16のテキストファイルをUTF8に変換した後のバイト列(char*型)を取得するときにいろいろやったのでメモ.
なんかまわりくどいのですが,

NSString *str = [NSString stringWithContentsOfFile:@"hogehoge.txt"
               encoding:NSUTF16LittleEndianStringEncoding
               error:&error];
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding
               allowLossyConversion:YES];
NSString *str2 = [[NSString alloc] initWithData:data
                 encoding:NSUTF8StringEncoding]
                 autorelease];
char *utf8chr = (char*)[str2 cStringUsingEncoding:
                              NSUTF8StringEncoding];

でうまくいきました.
もっとスマートな方法があるんだと思うのですが.


カテゴリー: iOSアプリ開発, 技術的なこと パーマリンク