- assert 断言
- async_hooks 异步钩子
- async_hooks/context 异步上下文
- buffer 缓冲区
- C++插件
- C/C++插件(使用 Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- Corepack 核心包
- crypto 加密
- crypto/webcrypto 网络加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议 2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS 模块
- module/esm ECMAScript 模块
- module/package 包模块
- module/typescript TS 模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- permission 权限
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- sea 单个可执行应用程序
Node.js v22.12.0 文档
- Node.js v22.12.0
- 目录
-
导航
- assert 断言
- async_hooks 异步钩子
- async_hooks/context 异步上下文
- buffer 缓冲区
- C++插件
- C/C++插件(使用 Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- Corepack 核心包
- crypto 加密
- crypto/webcrypto 网络加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议 2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS 模块
- module/esm ECMAScript 模块
- module/package 包模块
- module/typescript TS 模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- permission 权限
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- sea 单个可执行应用程序
- 其他版本
字符串解码器#
¥String decoder
¥Stability: 2 - Stable
node:string_decoder
模块提供了用于将 Buffer
对象解码为字符串(以保留编码的多字节 UTF-8 和 UTF-16 字符的方式)的 API。可以使用以下方式访问它:
¥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. It can be accessed using:
import { StringDecoder } from 'node:string_decoder';
const { StringDecoder } = require('node:string_decoder');
下面的示例展示了 StringDecoder
类的基本用法。
¥The following example shows the basic use of the StringDecoder
class.
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)); // Prints: ¢
const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Prints: €
const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');
const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent)); // Prints: ¢
const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Prints: €
当 Buffer
实例被写入 StringDecoder
实例时,会使用内部的缓冲区来确保解码后的字符串不包含任何不完整的多字节字符。这些都保存在缓冲区中,直到下一次调用 stringDecoder.write()
或调用 stringDecoder.end()
。
¥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. These are held in the buffer until the
next call to stringDecoder.write()
or until stringDecoder.end()
is called.
在以下示例中,欧洲欧元符号 (€
) 的三个 UTF-8 编码的字节通过三次单独的操作写入:
¥In the following example, the three UTF-8 encoded bytes of the European Euro
symbol (€
) are written over three separate operations:
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]))); // Prints: €
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]))); // Prints: €
类:StringDecoder
#
¥Class: StringDecoder
new StringDecoder([encoding])
#
-
encoding
<string>StringDecoder
将使用的字符 字符编码。默认值:'utf8'
。¥
encoding
<string> The character encoding theStringDecoder
will use. Default:'utf8'
.
创建新的 StringDecoder
实例。
¥Creates a new StringDecoder
instance.
stringDecoder.end([buffer])
#
-
buffer
<string> | <Buffer> | <TypedArray> | <DataView> 要解码的字节。¥
buffer
<string> | <Buffer> | <TypedArray> | <DataView> The bytes to decode. -
返回:<string>
¥Returns: <string>
以字符串形式返回存储在内部缓冲区中的任何剩余的输入。表示不完整的 UTF-8 和 UTF-16 字符的字节将被替换为适合字符编码的替换字符。
¥Returns any remaining input stored in the internal buffer as a string. Bytes representing incomplete UTF-8 and UTF-16 characters will be replaced with substitution characters appropriate for the character encoding.
如果提供了 buffer
参数,则在返回剩余的输入之前执行对 stringDecoder.write()
的最后一次调用。调用 end()
之后,stringDecoder
对象可以重新用于新的输入。
¥If the buffer
argument is provided, one final call to stringDecoder.write()
is performed before returning the remaining input.
After end()
is called, the stringDecoder
object can be reused for new input.
stringDecoder.write(buffer)
#
-
buffer
<string> | <Buffer> | <TypedArray> | <DataView> 要解码的字节。¥
buffer
<string> | <Buffer> | <TypedArray> | <DataView> The bytes to decode. -
返回:<string>
¥Returns: <string>
返回已解码的字符串,确保从返回的字符串中省略 Buffer
、TypedArray
或 DataView
末尾的任何不完整的多字节字符,并将其存储在内部缓冲区中,以备下次调用 stringDecoder.write()
或 stringDecoder.end()
时使用。
¥Returns a decoded string, ensuring that any incomplete multibyte characters at
the end of the Buffer
, or TypedArray
, or DataView
are omitted from the
returned string and stored in an internal buffer for the next call to
stringDecoder.write()
or stringDecoder.end()
.