String.fromCharCode()

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

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

Синтаксис

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

Параметри

num1, ..., numN

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

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

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

Опис

Цей метод повертає рядок, а не об'єкт String.

Оскільки fromCharCode() — це статичний метод об'єкта String, його потрібно завжди використовувати через String.fromCharCode(). Не слід звертатись до нього як до методу власноруч створеного екземпляра String.

Отримання допоміжних символів

Більшість загальновживаних символів в UTF-16 позначається одинарним 16-бітним значенням (тобто — кодовою одиницею). Однак, ця множина символів, відома як Базовий багатомовний план (Basic Multilingual Plane — BMP), складає лише 1/17 всієї множини придатних для адресації кодових одиниць Unicode. Решта кодових одиниць, на проміжку від 65536 (0x010000) і до 1114111 (0x10FFFF) — відома як допоміжні, або додаткові символи. В UTF-16, додаткові символи позначаються двома 16-бітними кодовими одиницями, відомими як сурогати, зарезервованими для цих потреб. Дійсна комбінація з двох сурогатів, застосована для позначення додаткового символу, називається сурогатною парою.

Оскільки 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

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