1e41f4b71Sopenharmony_ci# ArkTS Subsystem Changelog 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci## cl.arkts.1 StringDecoder's Incorrect Decoding Behavior in Specific Scenarios Is Changed 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci**Access Level** 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ciPublic API 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci**Reason for Change** 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ciIf the input parameter Uint8Array contains element 0, StringDecoder cannot decode the data following element 0. Instead, it truncates the data at the position of element 0. As such, the decoded data is incomplete. 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci**Change Impact** 14e41f4b71Sopenharmony_ci 15e41f4b71Sopenharmony_ciThis change is a compatible change. 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ciBefore change: 18e41f4b71Sopenharmony_ciWhen the Uint8Array that contains element 0 is encoded, the data is incomplete. Encoding the decoded data fails to restore the original Uint8Array. 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ciAfter change: 21e41f4b71Sopenharmony_ciThe Uint8Array that contains element 0 is correctly decoded, and the decoded data is complete. 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci**Start API Level** 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci12 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci**Change Since** 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ciOpenHarmony SDK 5.0.0.43 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci**Key API/Component Changes** 32e41f4b71Sopenharmony_ci 33e41f4b71Sopenharmony_ciTwo APIs in the util.StringDecoder module: 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ciwrite(chunk: string | Uint8Array): string; 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ciend(chunk?: string | Uint8Array): string; 38e41f4b71Sopenharmony_ci 39e41f4b71Sopenharmony_ci**Adaptation Guide** 40e41f4b71Sopenharmony_ci 41e41f4b71Sopenharmony_ciNo adaptation is required. 42e41f4b71Sopenharmony_ci 43e41f4b71Sopenharmony_ci```ts 44e41f4b71Sopenharmony_ciimport { util } from '@kit.ArkTS'; 45e41f4b71Sopenharmony_ci 46e41f4b71Sopenharmony_cilet decoder = new util.StringDecoder('utf-8'); 47e41f4b71Sopenharmony_ci// 0xE4, 0xBD, 0xA0 Decoding result: Hello 48e41f4b71Sopenharmony_ci// 0 Decoding result: \u0000 (invisible character, occupying one byte) 49e41f4b71Sopenharmony_ci// 0xE5, 0xA5, 0xBD decoding result: World 50e41f4b71Sopenharmony_cilet input = new Uint8Array([0xE4, 0xBD, 0xA0, 0, 0xE5, 0xA5, 0xBD]); 51e41f4b71Sopenharmony_ciconst decoded = decoder.write(input); 52e41f4b71Sopenharmony_ciconst decodedend = decoder.end(input); 53e41f4b71Sopenharmony_ci 54e41f4b71Sopenharmony_ci// Before change: 55e41f4b71Sopenharmony_ciconsole.info("decoded:", decoded)); // Hello 56e41f4b71Sopenharmony_ci// console.info("decoded.length:", decoded.length); // 1 57e41f4b71Sopenharmony_ci// console.info ("decodedend:," decodedend); // Hello 58e41f4b71Sopenharmony_ci// console.info("decodedend.length:", decodedend.length); // 1 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci// Now: 61e41f4b71Sopenharmony_ciconsole.info("decoded:", decoded)); // Hello World 62e41f4b71Sopenharmony_ciconsole.info("decoded.length:", decoded.length); // 3 63e41f4b71Sopenharmony_ciconsole.info("decodedend:", decodedend);// Hello World 64e41f4b71Sopenharmony_ciconsole.info("decodedend.length:", decodedend.length); // 3 65e41f4b71Sopenharmony_ci``` 66