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