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