harmony 鸿蒙ArkTS Subsystem Changelog

  • 2025-06-12
  • 浏览 (27)

ArkTS Subsystem Changelog

cl.arkts.1 Encoding Behavior of utf-16le and utf-16be of the util.TextEncoder Module Changed

Access Level

Public API

Reason for Change

When TextEncoder uses the utf-16le or utf-16be encoding format, the encoded data obtained is incorrect.

The utf-16le encoding format uses little-endian. However, the encoded data is in big-endian format.

The utf-16be encoding format uses big-endian. However, the encoded data is in little-endian format.

The data obtained does not comply with the standard definition. This problem needs to be corrected.

Change Impact

This change is a non-compatible change.

Before change:

The utf-16le encoding format uses little-endian. However, the encoded data is in big-endian format.

The utf-16be encoding format uses big-endian. However, the encoded data is in little-endian format.

After change:

The utf-16le encoding format uses little-endian, and the encoded data is in little-endian format.

The utf-16be encoding format uses big-endian, and the encoded data is in big-endian format.

Start API Level

9

Change Since

OpenHarmony SDK 5.0.0.42

Key API/Component Changes

APIs of the util.TextEncoder module:

encodeInto(input?: string): Uint8Array;

encodeIntoUint8Array(input: string, dest: Uint8Array): EncodeIntoUint8ArrayInfo;

Adaptation Guide

No adaptation is required.

Behavior of encodeInto:

import { util } from '@kit.ArkTS';

let encoderUtf16Le = new util.TextEncoder("utf-16le");
let encoderUtf16Be = new util.TextEncoder("utf-16be");

// Before change:
// 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


// After change:
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

Behavior of encodeIntoUint8Array:

import { util } from '@kit.ArkTS';

let encoderUtf16Le = new util.TextEncoder("utf-16le");
let encoderUtf16Be = new util.TextEncoder("utf-16be");

// Before change:
// 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

// After change:
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

你可能感兴趣的鸿蒙文章

harmony 鸿蒙ArkUI Subsystem Changelog

harmony 鸿蒙Window Subsystem Changelog

0  赞