String.fromCharCode()

Статичний метод String.fromCharCode() (із коду символу) повертає рядок, сформований з вказаної послідовності кодових одиниць UTF-16.

Спробуйте його в дії

Синтаксис

String.fromCharCode()
String.fromCharCode(num1)
String.fromCharCode(num1, num2)
String.fromCharCode(num1, num2, /* …, */ numN)

Параметри

num1, …, numN

Число між 0 і 65535 (0xFFFF), що відповідає кодовій одиниці UTF-16. Числа, більші за 0xFFFF, обрізаються до останніх 16 бітів. Перевірка на коректність не виконується.

Повернене значення

Рядок довжиною N, який складається з N вказаних кодових одиниць UTF-16.

Опис

У зв'язку з тим, що fromCharCode() є статичним методом String, він завжди використовується у вигляді String.fromCharCode(), а не як метод самостійно створених значень String.

Кодові точки Unicode мають діапазон від 0 до 1114111 (0x10FFFF). Статичний метод charCodeAt() завжди повертає значення, менші за 65536, оскільки вищі кодові точки представлені парами 16-бітових псевдосимволів-сурогатів. Таким чином, щоб створити повний символ зі значенням, більшим за 65535, необхідно надати дві кодові одиниці (як якби оброблявся рядок з двома символами). Про Unicode читайте UTF-16 символи, кодові точки Unicode та графемні кластери.

У зв'язку з тим, що fromCharCode() працює лише з 16-бітовими значеннями (так само як послідовності екранування \u), для отримання доповняльного символу необхідна сурогатна пара. Наприклад, і String.fromCharCode(0xd83c, 0xdf03), і "\ud83c\udf03" повертають кодову точку U+1F303 "Зоряна ніч". Попри те, що існує математична залежність між значенням доповняльної кодової точки (тобто 0x1f303) і обома сурогатними значеннями, що їй відповідають (тобто 0xd83c і 0xdf03), необхідний додатковий крок, щоб або обчислити, або знайти значення сурогатної пари щоразу, коли необхідна доповняльна кодова точка. Через це зручніше використовувати String.fromCodePoint(), котрий дає змогу повертати доповняльні символи на основі їхніх фактичних значень кодових точок. Наприклад, String.fromCodePoint(0x1f303) повертає кодову точку U+1F303 "Зоряна ніч".

Приклади

Застосування fromCharCode()

В UTF-16 символи базового багатомовного плану займають одну кодову одиницю:

String.fromCharCode(65, 66, 67); // повертає "ABC"
String.fromCharCode(0x2014); // повертає "—"
String.fromCharCode(0x12014); // також повертає "—"; цифра 1 обрізається, тож нею знехтувано
String.fromCharCode(8212); // також повертає "—"; 8212 — це десяткова форма числа 0x2014

Допоміжні символи в UTF-16 вимагають двох кодових одиниць (так звана сурогатна пара):

String.fromCharCode(0xd83c, 0xdf03); // Кодова одиниця U+1F303 "Зоряна
String.fromCharCode(55356, 57091); // ніч" === "\uD83C\uDF03"

String.fromCharCode(0xd834, 0xdf06, 0x61, 0xd834, 0xdf07); // "\uD834\uDF06a\uD834\uDF07"

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
fromCharCode
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 4
Opera Full support 4
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також