1# ArkTS子系统Changelog 2 3## cl.arkts.1 util.TextEncoder模块utf-16le和utf-16be编码数据行为变更 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11TextEncoder编码器在编码格式设置为utf-16le和utf-16be时,获得的编码数据相反。 12 13utf-16le为小端编码格式,编码出数据应该符合小端编码数据,但是实际表现为大端编码数据。 14 15utf-16be为大端编码格式,编码出数据应该符合大端编码数据,但是实际表现为小端编码数据。 16 17这两种编码格式所编码出的数据行为与标准定义不符合,需要修复此问题。 18 19**变更影响** 20 21该变更为不兼容性变更。 22 23变更前: 24 25utf-16le为小端编码格式,编码出数据应该符合小端编码数据,但是实际表现为大端编码数据。 26 27utf-16be为大端编码格式,编码出数据应该符合大端编码数据,但是实际表现为小端编码数据。 28 29变更后: 30 31utf-16le为小端编码格式,实际表现为小端编码数据。 32 33utf-16be为大端编码格式,实际表现为大端编码数据。 34 35**起始API Level** 36 37API 9 38 39**变更发生版本** 40 41从OpenHarmony 5.0.0.42 版本开始。 42 43**变更的接口/组件** 44 45util.TextEncoder模块的接口: 46 47encodeInto(input?: string): Uint8Array; 48 49encodeIntoUint8Array(input: string, dest: Uint8Array): EncodeIntoUint8ArrayInfo; 50 51**适配指导** 52 53变更描述: 修复TextEncoder编码器在编码格式设置为utf-16le和utf-16be时获取编码数据与定义不相符的BUG。 54 55encodeInto接口的表现: 56 57```ts 58import { util } from '@kit.ArkTS'; 59 60let encoderUtf16Le = new util.TextEncoder("utf-16le"); 61let encoderUtf16Be = new util.TextEncoder("utf-16be"); 62 63// 变更前: 64// let u16_le = encoderUtf16Le.encodeInto('abcdefg'); // u16_le: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 65// let u16_be = encoderUtf16Be.encodeInto('abcdefg'); // u16_be: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 66 67 68// 变更后: 69let u16_le = encoderUtf16Le.encodeInto('abcdefg'); // u16_le: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 70let u16_be = encoderUtf16Be.encodeInto('abcdefg'); // u16_be: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 71``` 72 73encodeIntoUint8Array接口的表现: 74 75```ts 76import { util } from '@kit.ArkTS'; 77 78let encoderUtf16Le = new util.TextEncoder("utf-16le"); 79let encoderUtf16Be = new util.TextEncoder("utf-16be"); 80 81// 变更前: 82// let dest_le = new Uint8Array(14); 83// let dest_be = new Uint8Array(14); 84// let res_le = encoderUtf16Le.encodeIntoUint8Array('abcdefg', dest_le); // dest_le: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 85// let res_be = encoderUtf16Be.encodeIntoUint8Array('abcdefg', dest_be); // dest_be: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 86 87// 变更后: 88let dest_le = new Uint8Array(14); 89let dest_be = new Uint8Array(14); 90let res_le = encoderUtf16Le.encodeIntoUint8Array('abcdefg', dest_le); // dest_le: 97,0,98,0,99,0,100,0,101,0,102,0,103,0 91let res_be = encoderUtf16Be.encodeIntoUint8Array('abcdefg', dest_be); // dest_be: 0,97,0,98,0,99,0,100,0,101,0,102,0,103 92``` 93