BMP siendo Basic Multilingual Planecadenas JavaScript fuera del BMP
Según JavaScript: las partes buenas:
JavaScript se construyó en un momento en Unicode es un conjunto de caracteres de 16 bits, por lo que todo los caracteres en JavaScript tienen 16 bits de ancho.
Esto me lleva a creer que JavaScript usa UCS-2 (¡no UTF-16!) Y solo puede manejar caracteres hasta U + FFFF.
La investigación adicional confirma:
> String.fromCharCode(0x20001);
El método fromCharCode
parece utilizar sólo los 16 bits más bajos al devolver el carácter Unicode. Intentar obtener U + 20001 (ideograma unificado CJK 20001) en su lugar devuelve U + 0001.
Pregunta: ¿es posible manejar caracteres posteriores a BMP en JavaScript?
2011-07-31: deslice doce de Soporte Unicode tiroteo: El bueno, el malo, el & (en su mayoría) Feo cubre temas relacionados con esto muy bien:
Si estuviera usando UTF-16, entonces se esperaría que los caracteres fuera del plano multilingüe básico fueran compatibles con pares de sustitución. ¿Por qué esperas que acepte un personaje de 32 bits? –
Muchas gracias por eso, nunca pensé en eso de esa manera. –
@MichaelAaronSafyan: como JavaScript no tiene nada parecido a un tipo "char" y 'String.fromCharCode()' devuelve una cadena, parece justo esperar que devuelva una cadena que contenga las dos unidades de código que componen el carácter. Creo que habrá un 'String.fromCodePoint()' agregado a un futuro estándar de JavaScript para hacer exactamente eso. – hippietrail