JavaScript TextEncoder.encode() — рядок у байти UTF-8


Метод encode() перетворює рядок на байти UTF-8Uint8Array.

автор: NagarD

Загальний опис

Найкорисніше побічне застосування — дізнатись справжній розмір тексту. Властивість length рядка рахує символи, а не байти: українська літера займає два байти, емодзі — чотири.

Тому обмеження «не більше 255 байтів» (а такі в базах даних і протоколах трапляються постійно) неможливо перевірити через text.length.

Основне ж призначення — годувати байтами те, що рядків не приймає: crypto.subtle, двійковий WebSocket, власні протоколи.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
encode 38+ 19+ 10.1+ 25+ 79+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
encode 38+ yes yes 10.3+

Приклади

+ запропонувати свій приклад у пісочниці

Скільки байтів насправді займає текст.

const encoder = new TextEncoder();

const text = 'Привіт 👋';

console.log(text.length);                  // 9 символів
console.log(encoder.encode(text).length);  // 17 байтів!

// перевірка обмеження бази даних
function fitsIn(text, maxBytes) {
    return new TextEncoder().encode(text).length <= maxBytes;
}

console.log(fitsIn('Привіт', 10)); // false — 12 байтів
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід