帮你快速理解、总结文档立即下载

Encoding

最近更新时间:2026-01-06 14:47:42
我的收藏
基于 Web APIs 标准 TextEncoder、TextDecoder 进行设计,实现了编码器与解码器。

TextEncoder

编码器,接收码点流作为输入,并输出 UTF-8 字节流。请参考 MDN 官方文档 TextEncoder。

构造函数

// TextEncoder 构造函数,不接受任何参数。
const encoder = new TextEncoder();

属性

// encoder.encoding
readonly encoding: string;
编码器的编码类型,当前值仅为 UTF-8。

方法

encode

encoder.encode(input?: string | undefined): Uint8Array
接收码点流作为输入,并输出 UTF-8 字节流。
注意
input 最大长度为 300M,超出长度会抛出异常。
encoder.encode 参数
参数名称
类型
必填
说明
input
string | undefined
否
编码器输入值。

encodeInto

encoder.encodeInto(input: string, destination: Uint8Array): EncodeIntoResult;
接收码点流作为输入,输出 UTF-8 字节流,并写入到参数 destination 字节数组中。
参数
参数名称
类型
必填
说明
input
string
是
编码器输入值。
destination
是
编码器输出值。
返回值 EncodeIntoResult
属性名
类型
说明
read
number
已转换为 UTF-8 的 UTF-16 单元数。
written
number
目标 Uint8Array 中修改的字节数。

TextDecoder

解码器。将字节流作为输入,并提供码点流作为输出。请参考 MDN 官方文档 TextDecoder。

构造方法

const decoder = new TextDecoder(label?: string | undefined, options?: DecoderOptions | undefined): TextEncoder;

参数

注意:
参数 label,下述的值暂不支持:
iso-8859-16。
hz-gb-2312。
csiso2022kr,iso-2022-kr。
参数名称
类型
必填
说明
label
string | undefined
否
解码器类型,默认值为 UTF-8。可选的 label值参考 MDN 官方文档。
options
DecoderOptions | undefined
否
解码器配置项。

DecoderOptions

解码器配置项如下所示。
属性名
类型
默认值
说明
fatal
boolean
false
标识解码失败时是否抛出异常。
ignoreBOM
boolean
false
标识是否忽略 byte-order mark。

属性

encoding

// decoder.encoding
readonly encoding: string;
解码器类型。

fatal

// decoder.fatal
readonly fatal: boolean;
当解码失败,标识是否抛出异常。

ignoreBOM

// decoder.ignoreBOM
readonly ignoreBOM: boolean;
标识是否忽略 byte-order mark。

方法

decode

const result = decoder.decode(buffer?: ArrayBuffer | ArrayBufferView | undefined, options?: DecodeOptions | undefined): string;
注意
参数 buffer 最大长度为 100M,超出长度会抛出异常。
参数名称
类型
必填
说明
buffer
否
待解码的字节流。
buffer 最大长度为 100M,超出长度会抛出异常。
options
否
执行解码配置项。

DecodeOptions

执行解码配置项如下所示。
属性名
类型
默认值
说明
stream
boolean
false
设置流式解码,默认为 false ,取值说明如下。
true
表示以 chunk的方式处理数据,即流式解码。
false
表示 chunk已结束或未使用 chunk 处理数据,即非流式解码。

示例代码

function handleEvent(event) {
// 编码器
const encoder = new TextEncoder();
const encodeText = encoder.encode('hello world');

// 解码器
const decoder = new TextDecoder();
const decodeText = decoder.decode(encodeText);

// 客户端响应内容
const response = new Response(JSON.stringify({
encodeText: encodeText.toString(),
decodeText,
}));

return response;
}

addEventListener('fetch', (event) => {
event.respondWith(handleEvent(event));
});

相关参考