の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); // → ラーメン食べたい
===========================================