Regex и текст

Длина строки в JavaScript: символы, байты, эмодзи и суррогатные пары

Свойство .length в JavaScript считает кодовые единицы UTF-16, а не количество реальных символов, эмодзи или байтов.

Опубликовано

Живое сравнение метрик

Проверьте строку

Введите текст или выберите пресет. Четыре значения рассчитываются по той же логике, что и в String Length Calculator.

JavaScript .length2Кодовые единицы UTF-16
Кодовые точки Unicode1Значения Unicode
Видимые графемы1Символы, видимые пользователю
Байты UTF-84Размер в байтах UTF-8

Результат → объяснение

Почему значения различаются

.length

Считает кодовые единицы UTF-16, используемые строками JavaScript.

Кодовые точки

Считают скалярные значения Unicode, но не обязательно видимые символы.

Графемы

Приближены к символам, которые пользователь видит на экране.

Байты UTF-8

Измеряют размер закодированной полезной нагрузки или файла.

Выберите нужную метрику

МетрикаAPIДля чего использовать
Единицы UTF-16value.lengthОграничения JavaScript и DOM
Кодовые точки[...value].lengthСкалярные значения Unicode
ГрафемыIntl.SegmenterЛимиты видимых символов
Байты UTF-8TextEncoderРазмер передачи и хранения данных

Интерактивный расчет

Измерьте длину вашей строки

Сравните .length, кодовые точки Unicode, графемы и байты UTF-8 в реальном времени.

Открыть String Length →