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.
Вопрос: возможно ли вообще обрабатывать символы post-BMP в JavaScript?
31.07.2011: слайд двенадцать из Выборка поддержки Unicode: Хорошее, Плохое и (в основном) Уродливое довольно хорошо освещает связанные с этим проблемы: