文字列を \uXXXX 形式の Unicode 列に変換する : Objective-C プログラミング
PROGRAM
文字列を \uXXXX 形式の Unicode 列に変換する
以前に UTF8 データ列を \uXXXX 形式の Unicode に変換する で、UTF-8 形式のバイト列を格納した NSData から \uXXXX 形式の Unicode 文字コード列を取得する方法について記しましたけど、NSString 型のデータなら、もっと簡単に Unicode 文字コード列に変換できることがわかりました。
というのも、NSString* 型の文字列は内部で 2 バイトの Unicode として格納されているため、NSString* が保持している文字列を順に取り出して、それを "\u%04x" という書式で文字列に変換したものを繋げる感じで、簡単に作って行くことが可能です。
NSMutableString* result = [[NSMutableString alloc] init];
// 全文字分の処理を行います。
for (NSUInteger i = 0; i < string.length; i++)
{
// 文字を順に取り出します。
unichar code = [string characterAtIndex:i];
// 取得できた文字を '\uXXXX' 形式に変換します。
[result appendFormat:@"\\u%04x", code];
}
これで NSMutableString 型の変数 result に、各文字を "\uXXXX" 形式に変換した文字列を取得することが出来ました。
NSData に格納した UTF-8 データ列も、NSString の stringWithData: メソッドを使って簡単に NSString 型に変換できるので、そうしてから上記のコードで Unicode コード列に変換するのがいちばん間違いがないかもしれないですね。
[ もどる ]