2013年09月05日

[iOS] Unicode文字をデコードする

「\u」+ 数字4文字

のUnicode文字をもとの文字に変換(デコード)する機会がありました。
なかなか解決策が見つからず、結構ハマったのでメモ。


@通常文字 → Unicode文字 に変換する
プログラムでUnicode文字が作れるんですねー。
【参考】文字列を \uXXXX 形式の Unicode 列に変換する:
http://program.station.ez-net.jp/special/handbook/objective-c/nsstring/to-unicode.asp


A@の結果を文字列変換サイトでチェック
【参考】文字列のエンコード/デコード:
http://www.crystal-creation.com/web-appli/string/encode-decode/


BUnicode文字 → 通常文字
「CFStringTransform」を使うようです。
詳しくはまだ理解してません orz
【参考】
http://stackoverflow.com/questions/2099349/using-objective-c-cocoa-to-unescape-unicode-characters-ie-u1234


@からBをまとめるとこんな感じ。
===========================================
// おおもとの文字
NSString *string = @"ラーメン食べたい";

// Unicode文字にエンコード
NSMutableString* uniString = [[NSMutableString alloc] init];
for (NSUInteger i = 0; i < string.length; i++) {
unichar code = [string characterAtIndex:i];
// "\uXXXX"形式に変換
[uniString appendFormat:@"\\u%04x", code];
}

// Unicode文字チェック
NSLog(@"%@", uniString); // → \u30e9\u30fc\u30e1\u30f3\u98df\u3079\u305f\u3044

// デコード
NSString *convertString = [uniString mutableCopy];
CFStringTransform((CFMutableStringRef)convertString, NULL, CFSTR("Any-Hex/Java"), YES);

// デコード後チェック
NSLog(@"%@", convertString); // → ラーメン食べたい
===========================================
posted by be-style at 20:41| Comment(0) | iOS
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。