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