Декодер строк
Исходный код: lib/string_decoder.js
Модуль string_decoder предоставляет API для декодирования Buffer объектов в строки таким образом, чтобы сохранялись закодированные многобайтовые символы UTF-8 и UTF-16. К нему можно обратиться следующим образом:
const { StringDecoder } = require('string_decoder'); Следующий пример демонстрирует базовое использование класса StringDecoder.
const { StringDecoder } = require('string_decoder');
const decoder = new StringDecoder('utf8');
const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent));
const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); При записи в экземпляр Buffer в экземпляр StringDecoder используется внутренний буфер, чтобы гарантировать, что декодированная строка не содержит неполных многобайтовых символов. Они хранятся в буфере до следующего вызова stringDecoder.write() или до вызова stringDecoder.end().
В следующем примере три байта UTF-8 символа евро (€) записываются в три отдельных операции:
const { StringDecoder } = require('string_decoder');
const decoder = new StringDecoder('utf8');
decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC]))); Класс: StringDecoder
new StringDecoder([encoding])
-
encoding<строка> Кодировка символов, используемая дляStringDecoder. По умолчанию:'utf8'.
Создаёт новый экземпляр StringDecoder.
stringDecoder.end([buffer])
-
buffer<Буфер> | <Массив типов> | <DataView>Buffer, илиTypedArray, илиDataView, содержащий байты для декодирования. - Возвращает: <строка>
Возвращает оставшиеся данные из внутреннего буфера в виде строки. Байты, представляющие неполные символы UTF-8 и UTF-16, будут заменены символами подстановки, соответствующими кодировке символов.
Если аргумент buffer указан, перед возвращением оставшихся данных выполняется дополнительный вызов stringDecoder.write(). После вызова end() объект stringDecoder может быть повторно использован для новых данных.
stringDecoder.write(buffer)
-
buffer<Буфер> | <Массив типов> | <DataView>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/dist/latest-v14.x/docs/api/string_decoder.html