以下のコードを使用して絵文字文字が設定されている場合:
self.textField.text = @"\ue415";
正方形で表示されるだけです。しかし、キーボードから絵文字を入力すると、正しく表示されます。どうしたの?
PS: IOS 5.1 を使用しています。
古いバージョンの iOS では、絵文字文字はすべて Unicode Private Use Area にありました。これは、名前が示すように、関連付けられた文字を明示的に持たない Unicode コード ポイントのセットです。ただし、Unicode 標準は多数の絵文字を含むように更新されているため、iOS は Mac OS X と同様にこれらの文字を使用するようになりました。
www.unicode.org/charts (例: http://www.unicode.org/charts/PDF/U1F600.pdf ) のコード チャートですべての Unicode 絵文字のリストを見ることができ、これらは各絵文字が実際に何であるかを示します。表すことを意味します。
Unicode Emoji はどれも Unicode 仕様の Basic Multilingual Plane に含まれていません。つまり、すべてが大きすぎて 1 つの iOS unichar に収まりません。そのため、絵文字が NSString に格納されている場合、各絵文字は複数の unichar をカバーします。これは、文字列内の文字を繰り返し処理しようとする場合に注意する必要があります。
次のようなコードがある場合
NSString *emoji =@"\U0001F604";
NSString *ascii = @"A";
NSLog(@"emoji.length %d, ascii.length %d", emoji.length, ascii.length);
これは出力に表示されます
2013-03-08 14:42:22.841 test[23980:c07] emoji.length 2, ascii.length 1
ここで、単一の SMILING FACE WITH OPEN MOUTH AND SMILING EYES 絵文字は 2 unichar の長さであり、予想される 1 文字ではありません。