Декодер строк
Модуль 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])));
Класс: new StringDecoder([encoding])
-
encoding<строка> Кодировка символов, которую будет использоватьStringDecoder. По умолчанию:'utf8'.
Создает новый экземпляр StringDecoder.
stringDecoder.end([buffer])
-
buffer<Буфер>Bufferсодержащий байты для декодирования.
Возвращает любые оставшиеся входные данные, хранящиеся во внутреннем буфере, как строку. Байты, представляющие незавершенные символы UTF-8 и UTF-16, будут заменены на символы-заменители, подходящие для кодировки символов.
Если аргумент buffer предоставлен, перед возвращением оставшихся входных данных выполняется последний вызов stringDecoder.write().
stringDecoder.write(buffer)
-
buffer<Буфер>Bufferсодержащий байты для декодирования.
Возвращает декодированную строку, гарантируя, что любые незавершенные многобайтовые символы в конце Buffer исключаются из возвращаемой строки и хранятся во внутреннем буфере для следующего вызова 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-v8.x/docs/api/string_decoder.html