BMP essendo Basic Multilingual Planestringhe JavaScript al di fuori del BMP
Secondo JavaScript: le parti buone:
è stato costruito JavaScript in un momento in Unicode è un set di caratteri a 16 bit, in modo che tutti i caratteri in JavaScript sono larghi 16 bit.
Questo mi porta a credere che JavaScript usi UCS-2 (non UTF-16!) E possa gestire solo caratteri fino a U + FFFF.
Ulteriori indagini conferma:
> String.fromCharCode(0x20001);
Il metodo fromCharCode
sembra di utilizzare solo il più basso 16 bit quando si ritorna il carattere Unicode. Cercando di ottenere U + 20001 (ideogramma unificato CJK 20001) restituisce invece U + 0001.
Domanda: è possibile gestire i caratteri post-BMP in JavaScript?
2011-07-31: far scorrere dodici da Supporto Unicode Shootout: Il buono, il brutto, il & (per lo più) Ugly copre le questioni relative a questo piuttosto bene:
Se si stesse utilizzando UTF-16, ci si aspetterebbe che i caratteri al di fuori del piano multilingue di base siano supportati utilizzando coppie di surrogati. Perché ti aspetteresti che accetti un personaggio a 32 bit? –
Grazie mille per questo, non ci ho mai pensato in questo modo. –
@MichaelAaronSafyan: Poiché JavaScript non ha nulla che assomigli a un tipo "char" e 'String.fromCharCode()' restituisce una stringa, sembra giusto aspettarsi che restituisca una stringa contenente entrambe le unità di codice che costituiscono il carattere. Credo che ci sarà un 'String.fromCodePoint()' aggiunto ad un futuro standard JavaScript per fare esattamente questo. – hippietrail