- Assertion testing
- Asynchronous context tracking
- Async hooks
- Buffer
- C++ addons
- C/C++ addons with Node-API
- C++ embedder API
- Child processes
- Cluster
- Command-line options
- Console
- Corepack
- Crypto
- Debugger
- Deprecated APIs
- Diagnostics Channel
- DNS
- Domain
- Errors
- Events
- File system
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- Internationalization
- Modules: CommonJS modules
- Modules: ECMAScript modules
- Modules:
node:module
API - Modules: Packages
- Net
- OS
- Path
- Performance hooks
- Permissions
- Process
- Punycode
- Query strings
- Readline
- REPL
- Report
- Stream
- String decoder
- Test runner
- Timers
- TLS/SSL
- Trace events
- TTY
- UDP/datagram
- URL
- Utilities
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- Worker threads
- Zlib
Node.js v18.12.1 documentation
- Node.js v18.12.1
- ► Table of contents
-
► Index
- Assertion testing
- Asynchronous context tracking
- Async hooks
- Buffer
- C++ addons
- C/C++ addons with Node-API
- C++ embedder API
- Child processes
- Cluster
- Command-line options
- Console
- Corepack
- Crypto
- Debugger
- Deprecated APIs
- Diagnostics Channel
- DNS
- Domain
- Errors
- Events
- File system
- Globals
- HTTP
- HTTP/2
- HTTPS
- Inspector
- Internationalization
- Modules: CommonJS modules
- Modules: ECMAScript modules
- Modules:
node:module
API - Modules: Packages
- Net
- OS
- Path
- Performance hooks
- Permissions
- Process
- Punycode
- Query strings
- Readline
- REPL
- Report
- Stream
- String decoder
- Test runner
- Timers
- TLS/SSL
- Trace events
- TTY
- UDP/datagram
- URL
- Utilities
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- Worker threads
- Zlib
- ► Other versions
- ► Options
Table of contents
String decoder#
Source Code: lib/string_decoder.js
The node:string_decoder
module provides an API for decoding Buffer
objects into strings in a manner that preserves encoded multi-byte UTF-8 and UTF-16 characters. node:string_decoder
模块提供了一个API,用于以保留编码的多字节UTF-8和UTF-16字符的方式将Buffer对象解码为字符串。It can be accessed using:可通过以下方式访问:
const { StringDecoder } = require('node:string_decoder');
The following example shows the basic use of the 以下示例显示StringDecoder
class.StringDecoder
类的基本用法。
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));
When a 当Buffer
instance is written to the StringDecoder
instance, an internal buffer is used to ensure that the decoded string does not contain any incomplete multibyte characters. Buffer
实例写入StringDecoder
实例时,使用内部缓冲区确保解码的字符串不包含任何不完整的多字节字符。These are held in the buffer until the next call to 这些数据保存在缓冲区中,直到下一次调用stringDecoder.write()
or until stringDecoder.end()
is called.stringDecoder.write()
或调用stringDecoder.end()
。
In the following example, the three UTF-8 encoded bytes of the European Euro symbol (在以下示例中,欧洲欧元符号(€
) are written over three separate operations:€
)的三个UTF-8编码字节通过三个单独的操作写入:
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])));