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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |