Строки JavaScript за пределами BMP
BMP существоБазовая многоязычная плоскость
В соответствии сJavaScript: хорошие части:
JavaScript был создан в то время, когда Unicode был 16-битным набором символов, поэтому все символы в JavaScript имеют ширину 16 бит.
Это наводит меня на мысль, что JavaScript использует UCS-2 (не UTF-16!) И может обрабатывать символы только до U + FFFF.
Дальнейшее расследование подтверждает это:
> String.fromCharCode(0x20001);
fromCharCode
Кажется, метод использует только младшие 16 бит при возврате символа Юникода. Попытка получить U + 20001 (унифицированная идеограмма CJK 20001) вместо этого возвращает U + 0001.
Вопрос: возможно ли вообще обрабатывать символы после BMP в JavaScript?
2011-07-31: слайд двенадцать изПерестрелка поддержки Юникода:Хорошее, плохое и (в основном) уродливое охватывает вопросы, связанные с этим довольно хорошо: