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 인코딩된 바이트가 세 개의 개별 작업에 걸쳐 기록됩니다.

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이제 각 유효하지 않은 문자는 개별 바이트 각각에 대해 하나씩이 아닌 단일 대체 문자로 대체됩니다.
v0.1.99추가된 버전: v0.1.99

디코딩된 문자열을 반환하고, Buffer, TypedArray 또는 DataView의 끝에 있는 불완전한 멀티바이트 문자가 반환된 문자열에서 생략되고 다음 stringDecoder.write() 또는 stringDecoder.end() 호출을 위해 내부 버퍼에 저장되도록 합니다.