Декодер строк
[Стабильно: 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)) // Выводит: ¢
const euro = Buffer.from([0xe2, 0x82, 0xac])
console.log(decoder.write(euro)) // Выводит: €
const { StringDecoder } = require('node:string_decoder')
const decoder = new StringDecoder('utf8')
const cent = Buffer.from([0xc2, 0xa2])
console.log(decoder.write(cent)) // Выводит: ¢
const euro = Buffer.from([0xe2, 0x82, 0xac])
console.log(decoder.write(euro)) // Выводит: €
Когда экземпляр 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]))) // Выводит: €
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]))) // Выводит: €
Класс: 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()
.