String decoder
ソースコード: 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])
Added in: v0.1.99
新しい StringDecoder
インスタンスを生成します。
stringDecoder.end([buffer])
Added in: v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> デコードするバイト列。- 戻り値: <string>
内部バッファに格納されている残りの入力を文字列として返します。 不完全な UTF-8 および UTF-16 文字を表すバイト列は、文字エンコーディングに適した代替文字に置き換えられます。
buffer
引数が指定されている場合、残りの入力が返される前に、stringDecoder.write()
への最後の呼び出しが 1 回実行されます。 end()
が呼び出されると、stringDecoder
オブジェクトを新しい入力に再利用できます。
stringDecoder.write(buffer)
[履歴]
バージョン | 変更 |
---|---|
v8.0.0 | 各無効な文字は、個々のバイトごとに 1 つではなく、単一の代替文字で置き換えられるようになりました。 |
v0.1.99 | Added in: v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> デコードするバイト列。- 戻り値: <string>
デコードされた文字列を返します。Buffer
、TypedArray
、または DataView
の末尾にある不完全なマルチバイト文字は、返された文字列から省略され、stringDecoder.write()
または stringDecoder.end()
の次回の呼び出しのために内部バッファに格納されます。