Декодер строк
Модуль string_decoder предоставляет API для декодирования Buffer объектов в строки таким образом, чтобы сохранялись закодированные многобайтовые символы UTF-8 и UTF-16. К нему можно обратиться следующим образом:
const StringDecoder = require('string_decoder').StringDecoder;
Следующий пример демонстрирует базовое использование класса StringDecoder.
const StringDecoder = require('string_decoder').StringDecoder;
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').StringDecoder;
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-v6.x/docs/api/string_decoder.html