JavaScript TextDecoder.decode() — байти в рядок


Метод decode() перетворює байти на рядок.

автор: NagarD

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

Найважливіша опція — { stream: true }. Байти з мережі приходять шматками, і багатобайтовий символ (українська літера, емодзі) цілком може розірватись між двома шматками.

Без цієї опції розкодувальник побачить обірваний символ і поставить на його місце «крякозябру» — назавжди. З нею він запам'ятає незавершені байти й дочекається решти в наступному шматку.

Тому правило просте: читаєш потоком — завжди { stream: true } на всіх шматках, крім останнього.

автор: NagarD

Порада

Дивні символи посеред тексту при потоковому читанні — це майже завжди забутий { stream: true }.

автор: NagarD

Переглядачі

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

Приклади

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

Потокове читання без розірваних символів.

(async () => {
    const decoder = new TextDecoder();

    try {
        const reader = (await fetch('/img/logo.svg')).body.getReader();
        let text = '';

        while (true) {
            const { value, done } = await reader.read();

            if (done) {
                text += decoder.decode(); // добираємо хвіст
                break;
            }

            // без stream: true символ міг би розірватись між шматками
            text += decoder.decode(value, { stream: true });
        }

        console.log('Прочитано символів:', text.length);
    } catch (error) {
        console.log('Потік недоступний:', error.message);
    }
})();
автор: NagarD

Коментарі

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

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

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

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

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

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

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

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

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

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

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