Декодер строк¶
Стабильность: 2 – Стабильная
АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.
Модуль node:string_decoder
предоставляет API для декодирования объектов Buffer
в строки с сохранением закодированных многобайтовых символов UTF-8 и UTF-16. Доступ к нему можно получить, используя:
1 |
|
В следующем примере показано базовое использование класса StringDecoder
.
1 2 3 4 5 6 7 8 |
|
Когда экземпляр Buffer
записывается в экземпляр StringDecoder
, используется внутренний буфер, чтобы убедиться, что декодированная строка не содержит неполных многобайтовых символов. Они хранятся в буфере до следующего вызова stringDecoder.write()
или до вызова stringDecoder.end()
.
В следующем примере три байта символа европейского евро (€
) в кодировке UTF-8 записываются за три отдельные операции:
1 2 3 4 5 6 7 |
|
Класс: StringDecoder
¶
new StringDecoder([encoding])
¶
encoding
<string>
Символьная кодировка, которую будет использоватьStringDecoder
. По умолчанию:'utf8'
.
Создает новый экземпляр StringDecoder
.
stringDecoder.end([buffer])
¶
buffer
{Buffer|TypedArray|DataView}Буфер
, илиTypedArray
, илиDataView
, содержащий байты для декодирования.- Возвращает:
<string>
Возвращает все оставшиеся входные данные, хранящиеся во внутреннем буфере, в виде строки. Байты, представляющие неполные символы UTF-8 и UTF-16, будут заменены символами-заместителями, соответствующими кодировке.
Если указан аргумент buffer
, то перед возвратом оставшегося ввода выполняется последний вызов stringDecoder.write()
. После вызова end()
объект stringDecoder
может быть повторно использован для нового ввода.
stringDecoder.write(buffer)
¶
buffer
{Buffer|TypedArray|DataView}Буфер
, илиTypedArray
, илиDataView
, содержащий байты для декодирования.- Возвращает:
<string>
Возвращает декодированную строку, гарантируя, что любые неполные многобайтовые символы в конце Buffer
, или TypedArray
, или DataView
будут исключены из возвращаемой строки и сохранены во внутреннем буфере для следующего вызова stringDecoder.write()
или stringDecoder.end()
.