1# ArkTS Subsystem Changelog
2
3## cl.arkts.1 Encoding Behavior of utf-16le and utf-16be of the util.TextEncoder Module Changed
4
5**Access Level**
6
7Public API
8
9**Reason for Change**
10
11When TextEncoder uses the utf-16le or utf-16be encoding format, the encoded data obtained is incorrect.
12
13The utf-16le encoding format uses little-endian. However, the encoded data is in big-endian format.
14
15The utf-16be encoding format uses big-endian. However, the encoded data is in little-endian format.
16
17The data obtained does not comply with the standard definition. This problem needs to be corrected.
18
19**Change Impact**
20
21This change is a non-compatible change.
22
23Before change:
24
25The utf-16le encoding format uses little-endian. However, the encoded data is in big-endian format.
26
27The utf-16be encoding format uses big-endian. However, the encoded data is in little-endian format.
28
29After change:
30
31The utf-16le encoding format uses little-endian, and the encoded data is in little-endian format.
32
33The utf-16be encoding format uses big-endian, and the encoded data is in big-endian format.
34
35**Start API Level**
36
379
38
39**Change Since**
40
41OpenHarmony SDK 5.0.0.42
42
43**Key API/Component Changes**
44
45APIs of the util.TextEncoder module:
46
47encodeInto(input?: string): Uint8Array;
48
49encodeIntoUint8Array(input: string, dest: Uint8Array): EncodeIntoUint8ArrayInfo;
50
51**Adaptation Guide**
52
53No adaptation is required.
54
55Behavior of **encodeInto**:
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// Before change:
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// After change:
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
73Behavior of **encodeIntoUint8Array**:
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// Before change:
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// After change:
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