Spec-Zone.ru › Node.js 20 LTS

Декодер строк

Стабильность: 2 — Стабильный

Исходный код: 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])

Добавлено в: v0.1.99
  • encoding <string> Кодировка символов encoding, которую будет использовать 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().

© 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-v20.x/docs/api/string_decoder.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API