harmony 鸿蒙ArkTS子系统Changelog
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
你可能感兴趣的鸿蒙文章
0
赞
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦