harmony 鸿蒙ArkTS子系统Changelog

  • 2025-06-16
  • 浏览 (11)

ArkTS子系统Changelog

cl.arkts.1 util.TextEncoder模块utf-16le和utf-16be编码数据行为变更

访问级别

公开接口

变更原因

TextEncoder编码器在编码格式设置为utf-16le和utf-16be时,获得的编码数据相反。

utf-16le为小端编码格式,编码出数据应该符合小端编码数据,但是实际表现为大端编码数据。

utf-16be为大端编码格式,编码出数据应该符合大端编码数据,但是实际表现为小端编码数据。

这两种编码格式所编码出的数据行为与标准定义不符合,需要修复此问题。

变更影响

该变更为不兼容性变更。

变更前:

utf-16le为小端编码格式,编码出数据应该符合小端编码数据,但是实际表现为大端编码数据。

utf-16be为大端编码格式,编码出数据应该符合大端编码数据,但是实际表现为小端编码数据。

变更后:

utf-16le为小端编码格式,实际表现为小端编码数据。

utf-16be为大端编码格式,实际表现为大端编码数据。

起始API Level

API 9

变更发生版本

从OpenHarmony 5.0.0.42 版本开始。

变更的接口/组件

util.TextEncoder模块的接口:

encodeInto(input?: string): Uint8Array;

encodeIntoUint8Array(input: string, dest: Uint8Array): EncodeIntoUint8ArrayInfo;

适配指导

变更描述: 修复TextEncoder编码器在编码格式设置为utf-16le和utf-16be时获取编码数据与定义不相符的BUG。

encodeInto接口的表现:

import { util } from '@kit.ArkTS';

let encoderUtf16Le = new util.TextEncoder("utf-16le");
let encoderUtf16Be = new util.TextEncoder("utf-16be");

// 变更前:
// let u16_le = encoderUtf16Le.encodeInto('abcdefg'); // u16_le: 0,97,0,98,0,99,0,100,0,101,0,102,0,103
// let u16_be = encoderUtf16Be.encodeInto('abcdefg'); // u16_be: 97,0,98,0,99,0,100,0,101,0,102,0,103,0


// 变更后:
let u16_le = encoderUtf16Le.encodeInto('abcdefg'); // u16_le: 97,0,98,0,99,0,100,0,101,0,102,0,103,0
let u16_be = encoderUtf16Be.encodeInto('abcdefg'); // u16_be: 0,97,0,98,0,99,0,100,0,101,0,102,0,103

encodeIntoUint8Array接口的表现:

import { util } from '@kit.ArkTS';

let encoderUtf16Le = new util.TextEncoder("utf-16le");
let encoderUtf16Be = new util.TextEncoder("utf-16be");

// 变更前:
// let dest_le = new Uint8Array(14);
// let dest_be = new Uint8Array(14);
// let res_le = encoderUtf16Le.encodeIntoUint8Array('abcdefg', dest_le); // dest_le: 0,97,0,98,0,99,0,100,0,101,0,102,0,103
// let res_be = encoderUtf16Be.encodeIntoUint8Array('abcdefg', dest_be); // dest_be: 97,0,98,0,99,0,100,0,101,0,102,0,103,0

// 变更后:
let dest_le = new Uint8Array(14);
let dest_be = new Uint8Array(14);
let res_le = encoderUtf16Le.encodeIntoUint8Array('abcdefg', dest_le); // dest_le: 97,0,98,0,99,0,100,0,101,0,102,0,103,0
let res_be = encoderUtf16Be.encodeIntoUint8Array('abcdefg', dest_be); // dest_be: 0,97,0,98,0,99,0,100,0,101,0,102,0,103

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkUI子系统ChangeLog

harmony 鸿蒙窗口子系统Changelog

0  赞