1# ArkTS子系统Changelog 2 3## cl.arkts.1 StringDecoder中特定场景下解码错误数据行为变更 4 5**访问级别** 6 7公开接口 8 9**变更原因** 10 11StringDecoder对于入参Uint8Array中存在元素0的情况,无法解码出Uint8Array中元素0后数据,在元素0位置截断,导致获取不到完整的解码数据。 12 13**变更影响** 14 15该变更为兼容性变更,属于问题修复。 16 17变更前: 18对于存在元素0的Uint8Array对象进行编码时,数据不完整。对解码出的值进行编码时,无法正常恢复为原始Uint8Array。 19 20变更后: 21对存在元素0的Uint8Array对象,正确进行解码,解码数据完整。 22 23**起始API Level** 24 25API 12 26 27**变更发生版本** 28 29从OpenHarmony 5.0.0.43 版本开始。 30 31**变更的接口/组件** 32 33util.StringDecoder模块下的两个接口: 34 35write(chunk: string | Uint8Array): string; 36 37end(chunk?: string | Uint8Array): string; 38 39**适配指导** 40 41变更描述:Uint8Array中存在元素0的情况,无需适配,属于问题修复。 42 43```ts 44import { util } from '@kit.ArkTS'; 45 46let decoder = new util.StringDecoder('utf-8'); 47// 0xE4, 0xBD, 0xA0 解码结果:你 48// 0 解码结果:\u0000(不可见字符,占一个长度) 49// 0xE5, 0xA5, 0xBD 解码结果:好 50let input = new Uint8Array([0xE4, 0xBD, 0xA0, 0, 0xE5, 0xA5, 0xBD]); 51const decoded = decoder.write(input); 52const decodedend = decoder.end(input); 53 54// 变更前: 55// console.info("decoded:", decoded);// 你 56// console.info("decoded.length:", decoded.length);// 1 57// console.info("decodedend:", decodedend);// 你 58// console.info("decodedend.length:", decodedend.length);// 1 59 60// 变更后: 61console.info("decoded:", decoded);// 你好 62console.info("decoded.length:", decoded.length);// 3 63console.info("decodedend:", decodedend);// 你好 64console.info("decodedend.length:", decodedend.length);// 3 65``` 66 67