En las versiones anteriores de iOS los caracteres Emoji estaban todos en el área de uso privado de Unicode, que como su nombre indica es un conjunto de Unicode puntos de código que explícitamente no tienen ningún carácter asociado. Sin embargo, el estándar Unicode se ha actualizado para incluir una gran cantidad de caracteres Emoji, por lo que iOS ahora usa estos, al igual que Mac OS X.
Puede ver una lista de todos los Emoji Unicode en los gráficos de códigos en www .unicode.org/charts eg http://www.unicode.org/charts/PDF/U1F600.pdf y estos también te dicen qué representa cada Emoji en realidad.
Ninguno de los Unicode Emoji se encuentran en el plano multilingüe básico de la especificación Unicode, lo que significa que son demasiado grandes para caber en un único iOS unichar. Entonces, cuando se almacenan en un NSString, cada emoji cubrirá varios unichars, algo a tener en cuenta si intenta iterar sobre los caracteres en una cadena.
Si usted tiene un código como
NSString *emoji [email protected]"\U0001F604";
NSString *ascii = @"A";
NSLog(@"emoji.length %d, ascii.length %d", emoji.length, ascii.length);
Usted verá esto en la salida
2013-03-08 14:42:22.841 test[23980:c07] emoji.length 2, ascii.length 1
donde la cara sonriente sola CON LA BOCA ABIERTA Y SONRISA OJOS emoji es dos unichars largo, no una como podríamos esperar
Echa un vistazo a mi respuesta en: http://stackoverflow.com/questions/9886903/iphone-how-to-write-symbol-on-a-label/9887028#9887028 – Devang
Encontré la solución. En ios5.1, debe usar Unicode 6.0, aquí están las asignaciones entre caracteres Unicode 6.0 y caracteres de Softbank PUA: http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS. txt – yakexi
la solución: self.textField.text = @ "\ U0001F604"; – yakexi