- 断言测试
- 异步上下文跟踪
- 异步钩子
- 缓冲(Buffer)
- C++ 插件
- 使用 Node-API 的 C/C++ 插件
- C++ 嵌入 Node环境
- 子进程(Child processes)
- 集群(Cluster)
- 命令行选项
- 控制台(Console)
- 核心包(Corepack)
- 加密(Crypto)
- 调试器(Debugger)
- 已弃用的 API
- 诊断通道(Diagnostics Channel)
- 域名系统(DNS)
- 域(Domain)
- 错误(Errors)
- 事件(Events)
- 文件系统(File system)
- 全局变量(Globals)
- HTTP
- HTTP/2
- HTTPS
- 检查器(Inspector)
- 国际化
- 模块:CommonJS 模块
- 模块:ECMAScript 模块
- 模块:
node:module
API - 模块:packages 模块
- 网络(Net)
- 系统(OS)
- 路径(Path)
- 性能挂钩(Performance hooks)
- 性能挂钩(Permissions)
- 进程(Process)
- Punycode 国际化域名编码
- 查询字符串(Query strings)
- 命令行库(Readline)
- REPL 交互式编程环境
- 诊断报告
- 单个可执行应用程序
- Stream 流
- 字符串解码器
- 单元测试
- 定时器(Timers)
- 传输层安全/SSL
- 跟踪事件
- TTY
- UDP/数据报
- URL
- 实用程序
- V8
- 虚拟机
- WebAssembly
- Web加密 API(Web Crypto API)
- 网络流 API(Web Streams API)
- 工作线程(Worker threads)
- zlib
Node.js v18.18.2 文档
- Node.js v18.18.2
- ► 目录
-
►
索引
- 断言测试
- 异步上下文跟踪
- 异步钩子
- 缓冲(Buffer)
- C++ 插件
- 使用 Node-API 的 C/C++ 插件
- C++ 嵌入 Node环境
- 子进程(Child processes)
- 集群(Cluster)
- 命令行选项
- 控制台(Console)
- 核心包(Corepack)
- 加密(Crypto)
- 调试器(Debugger)
- 已弃用的 API
- 诊断通道(Diagnostics Channel)
- 域名系统(DNS)
- 域(Domain)
- 错误(Errors)
- 事件(Events)
- 文件系统(File system)
- 全局变量(Globals)
- HTTP
- HTTP/2
- HTTPS
- 检查器(Inspector)
- 国际化
- 模块:CommonJS 模块
- 模块:ECMAScript 模块
- 模块:
node:module
API - 模块:packages 模块
- 网络(Net)
- 系统(OS)
- 路径(Path)
- 性能挂钩(Performance hooks)
- 性能挂钩(Permissions)
- 进程(Process)
- Punycode 国际化域名编码
- 查询字符串(Query strings)
- 命令行库(Readline)
- REPL 交互式编程环境
- 诊断报告
- 单个可执行应用程序
- Stream 流
- 字符串解码器
- 单元测试
- 定时器(Timers)
- 传输层安全/SSL
- 跟踪事件
- TTY
- UDP/数据报
- URL
- 实用程序
- V8
- 虚拟机
- WebAssembly
- Web加密 API(Web Crypto API)
- 网络流 API(Web Streams API)
- 工作线程(Worker threads)
- zlib
- ► 其他版本
- ► 选项
目录
字符串解码器#
稳定性:2 - 稳定
node:string_decoder
模块提供了一个 API,用于以保留编码的多字节 UTF-8 和 UTF-16 字符的方式将 Buffer
对象解码为字符串。可以使用以下方式访问它:
const { StringDecoder } = require('node:string_decoder');
以下示例显示了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));
当将Buffer
实例写入StringDecoder
实例时,将使用内部缓冲区来确保解码后的字符串不包含任何不完整的多字节字符。它们将保存在缓冲区中,直到下一次调用stringDecoder.write()
或调用stringDecoder.end()
。
在以下示例中,欧洲欧元符号 ( €
) 的三个 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])));
类:StringDecoder
#
new StringDecoder([encoding])
#
创建一个新的StringDecoder
实例。
stringDecoder.end([buffer])
#
buffer
<缓冲区> | <类型化数组> | < DataView>包含要解码的字节的Buffer
或TypedArray
或DataView
。- 返回:<字符串>
以字符串形式返回存储在内部缓冲区中的任何剩余输入。表示不完整 UTF-8 和 UTF-16 字符的字节将被替换为适合字符编码的替换字符。
如果提供了buffer
参数,
则在返回剩余输入之前执行对stringDecoder.write()
的最后一次调用。调用end()
后,可以将stringDecoder
对象重新用于新输入。
stringDecoder.write(buffer)
#
buffer
<缓冲区> | <类型化数组> | < DataView>包含要解码的字节的Buffer
或TypedArray
或DataView
。- 返回:<字符串>
返回解码后的字符串,确保从返回的字符串中省略Buffer
或TypedArray
或DataView
末尾的任何不完整的多字节字符并将其存储在用于下次调用
stringDecoder.write()
或stringDecoder.end()
的内部缓冲区。