tencent cloud

边缘安全加速平台 EO

Encoding

下载
聚焦模式
字号
最后更新时间: 2024-01-30 16:53:08
基于 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 marker

属性

encoding

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

fatal

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

ignoreBOM

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

方法

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));
});

相关参考

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈