Skip to content

文字列デコーダ

[安定版: 2 - 安定版]

安定版: 2 安定性: 2 - 安定版

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

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

js
import { StringDecoder } from 'node:string_decoder'
js
const { StringDecoder } = require('node:string_decoder')

次の例は、StringDecoderクラスの基本的な使用方法を示しています。

js
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)) // 出力: €
js
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()が呼び出されるまで、バッファに保持されます。

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

js
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]))) // 出力: €
js
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

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

stringDecoder.end([buffer])

追加されたバージョン: v0.9.3

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

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

stringDecoder.write(buffer)

[履歴]

バージョン変更点
v8.0.0無効な文字は、各バイトごとに 1 つではなく、1 つの置換文字に置き換えられるようになりました。
v0.1.99追加されたバージョン: v0.1.99

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