Декодер строк
[Стабильно: 2 - Стабильно]
Стабильно: 2 Стабильность: 2 - Стабильно
Исходный код: lib/string_decoder.js
Модуль node:string_decoder
предоставляет API для декодирования объектов Buffer
в строки таким образом, чтобы сохранялись многобайтовые символы UTF-8 и UTF-16. Доступ к нему можно получить с помощью:
import { StringDecoder } from 'node:string_decoder';
const { StringDecoder } = require('node:string_decoder');
В следующем примере показано основное использование класса StringDecoder
.
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: €
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, записываются в течение трех отдельных операций:
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: €
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])
Добавлено в версии: v0.1.99
encoding
<string> Символьная кодировка, которую будет использоватьStringDecoder
. По умолчанию:'utf8'
.
Создаёт новый экземпляр StringDecoder
.
stringDecoder.end([buffer])
Добавлено в версии: v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Байты для декодирования.- Возвращает: <string>
Возвращает любую оставшуюся входную информацию, хранящуюся во внутреннем буфере, в виде строки. Байты, представляющие неполные символы UTF-8 и UTF-16, будут заменены символами подстановки, подходящими для кодировки символов.
Если предоставлен аргумент buffer
, выполняется один последний вызов stringDecoder.write()
перед возвратом оставшегося ввода. После вызова end()
объект stringDecoder
можно повторно использовать для нового ввода.
stringDecoder.write(buffer)
[История]
Версия | Изменения |
---|---|
v8.0.0 | Каждый недопустимый символ теперь заменяется одним символом замены вместо одного для каждого отдельного байта. |
v0.1.99 | Добавлено в версии: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> Байты для декодирования.- Возвращает: <string>
Возвращает декодированную строку, гарантируя, что все неполные многобайтовые символы в конце Buffer
, TypedArray
или DataView
опущены из возвращаемой строки и сохранены во внутреннем буфере для следующего вызова stringDecoder.write()
или stringDecoder.end()
.