String decoder (文字列デコーダ)#

安定性: 2 - Stable

ソースコード: lib/string_decoder.js

node:string_decoder モジュールは、エンコードされたマルチバイトのUTF-8およびUTF-16文字を維持する方法で、Buffer オブジェクトを文字列にデコードするためのAPIを提供します。以下のようにしてアクセスできます。

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)); // Prints: ¢

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Prints: €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() が呼び出されるまでバッファに保持されます。

次の例では、ユーロ記号 () の3つのUTF-8エンコードされたバイトが、3回の別々の操作で書き込まれています。

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: €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])#

新しい StringDecoder インスタンスを作成します。

stringDecoder.end([buffer])#

内部バッファに保存されている残りの入力を文字列として返します。不完全なUTF-8およびUTF-16文字を表すバイトは、文字エンコーディングに適した置換文字に置き換えられます。

buffer 引数が指定された場合、残りの入力を返す前に、最後に一度 stringDecoder.write() が実行されます。end() が呼び出された後、stringDecoder オブジェクトは新しい入力のために再利用できます。

stringDecoder.write(buffer)#

デコードされた文字列を返します。BufferTypedArray、または DataView の末尾にある不完全なマルチバイト文字が返される文字列から省略され、次回の stringDecoder.write() または stringDecoder.end() の呼び出しのために内部バッファに保存されることを保証します。