TextEncoder
构造函数
// TextEncoder 构造函数,不接受任何参数。const encoder = new TextEncoder();
属性
// encoder.encodingreadonly 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 |
TextDecoder
构造方法
const decoder = new TextDecoder(label?: string | undefined, options?: DecoderOptions | undefined): TextEncoder;
参数
参数名称 | 类型 | 必填 | 说明 |
label | string | undefined | 否 | |
options | 否 | 解码器配置项。 |
DecoderOptions
解码器配置项如下所示。
属性名 | 类型 | 默认值 | 说明 |
fatal | boolean | false | 标识解码失败时是否抛出异常。 |
ignoreBOM | boolean | false |
属性
encoding
// decoder.encodingreadonly encoding: string;
解码器类型。
fatal
// decoder.fatalreadonly fatal: boolean;
当解码失败,标识是否抛出异常。
ignoreBOM
// decoder.ignoreBOMreadonly ignoreBOM: boolean;
方法
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));});