Spec-Zone.ru › Node.js

Декодер строк

Устойчивость: 2 - Стабильно

Исходный код: lib/string_decoder.js

Модуль node:string_decoder предоставляет API для декодирования Buffer объектов в строки таким образом, что сохраняются закодированные многобайтовые символы UTF-8 и UTF-16. К нему можно получить доступ, используя:

const { StringDecoder } = require('node:string_decoder'); copy

Следующий пример демонстрирует базовое использование класса StringDecoder.

const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent)); // Prints: ¢

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Prints: € copy

Когда экземпляр Buffer записывается в экземпляр StringDecoder, используется внутренний буфер, чтобы гарантировать, что декодированная строка не содержит неполных многобайтовых символов. Они хранятся в буфере до следующего вызова stringDecoder.write() или до вызова stringDecoder.end().

В следующем примере три байта кодированной в UTF-8 символа евро (€) записываются в три отдельных операции:

const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC]))); // Prints: € copy

Класс: StringDecoder

new StringDecoder([encoding])

Добавлен в: v0.1.99
  • encoding <строка> Кодировка символов кодирования StringDecoder. По умолчанию: 'utf8'.

Создает новый экземпляр StringDecoder.

stringDecoder.end([buffer])

Добавлен в: v0.9.3
  • buffer <строка> | <Буфер> | <TypedArray> | <DataView> Байты для декодирования.
  • Возвращает: <строка>

Возвращает любые оставшиеся входные данные, хранящиеся во внутреннем буфере, как строку. Байты, представляющие неполные символы UTF-8 и UTF-16, будут заменены на символы подстановки, соответствующие кодировке символов.

Если аргумент buffer указан, перед возвращением оставшихся входных данных выполняется последний вызов stringDecoder.write(). После вызова end(), объект stringDecoder может быть повторно использован для новых входных данных.

stringDecoder.write(buffer)

История
Версия Изменения
v8.0.0

Теперь каждый недопустимый символ заменяется одним символом подстановки вместо одного для каждого отдельного байта.

v0.1.99

Добавлен в: v0.1.99

  • buffer <строка> | <Буфер> | <TypedArray> | <DataView> Байты для декодирования.
  • Возвращает: <строка>

Возвращает декодированную строку, гарантируя, что любые неполные многобайтовые символы в конце Buffer, или TypedArray, или DataView опущены из возвращаемой строки и сохранены во внутреннем буфере для следующего вызова stringDecoder.write() или stringDecoder.end().

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/api/string_decoder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API