Spec-Zone.ru › Node.js

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

Исходный код: lib/string_decoder.js

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

Модуль 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)

Добавлено в: v0.1.99
История
Версия Изменения
v8.0.0

Теперь каждый недопустимый символ заменяется одним символом замены, а не отдельным символом для каждого байта.

  • 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/api/string_decoder.html

Spec-Zone.ru

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