string_decoder
Модуль node:string_decoder предоставляет API для декодирования объектов Buffer в строки с сохранением закодированных многобайтовых символов UTF-8 и UTF-16. Доступ к нему можно получить с помощью:
import { StringDecoder } from 'node:string_decoder';
В следующем примере показано базовое использование класса StringDecoder.
import { StringDecoder } from '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';
const decoder = new StringDecoder('utf8');
decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC]))); // Prints: €
Использование в Deno
import * as mod from "node:string_decoder";
class StringDecoder
Использование в Deno
import { StringDecoder } from "node:string_decoder";
Модуль node:string_decoder предоставляет API для декодирования объектов Buffer в строки с сохранением закодированных многобайтовых символов UTF-8 и UTF-16. Доступ к нему можно получить с помощью:
import { StringDecoder } from 'node:string_decoder';
В следующем примере показано базовое использование класса StringDecoder.
import { StringDecoder } from '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';
const decoder = new StringDecoder('utf8');
decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC]))); // Prints: €
Конструкторы
StringDecoder(encoding?: BufferEncoding) Методы
end(buffer?:
string
| Buffer
| ArrayBufferView
): string Возвращает все оставшиеся входные данные, хранящиеся во внутреннем буфере, в виде строки. Байты, представляющие неполные символы UTF-8 и UTF-16, будут заменены символами подстановки, соответствующими кодировке символов.
Если указан аргумент buffer, перед возвратом оставшихся входных данных выполняется последний вызов stringDecoder.write(). После вызова end() объект stringDecoder можно повторно использовать для новых входных данных.
write(buffer:
string
| Buffer
| ArrayBufferView
): string Возвращает декодированную строку, исключая из результата все неполные многобайтовые символы в конце Buffer, TypedArray или DataView и сохраняя их во внутреннем буфере для следующего вызова stringDecoder.write() или stringDecoder.end().
См. также
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/string_decoder