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?
2011-07-31: слайд двенадцать из Unicode Support Shootout: The Good, The Bad и (в основном) Ugly хорошо справляются с проблемами, связанными с этим: