如何在java中将文本转换为二进制UTF-16字符串?



我正在做一个项目,它要求我将阿拉伯语文本转换为二进制字符串UTF-16而不是utf-8。我将文本转换为 UTF-8 二进制字符串,但不知道如何将进程更改为 utf-16 而不是 utf-8..?因为当我将其更改为 UTF-16 时,每个代码点需要 4 字节而不是 2 字节.我知道阿拉伯字符范围(范围 0600 到 FFFF 十六进制(对于 utf-2 中的每个代码点正好需要 16 个字节。所以我不知道我的代码有什么问题.

将文本转换为二进制

public static String getBinaryFromText(String secretText) {
byte[] bytes = secretText.getBytes(StandardCharsets.UTF_8);
StringBuilder binary = new StringBuilder();
for (byte b : bytes) {
int val = b;
for (int i = 0; i < 8; i++) {
binary.append((val & 128) == 0 ? 0 : 1);
val <<= 1;
}
}
return binary.toString();
}

字符串本质上是 UTF-16。每个字符都是一个 UTF-16 代码点。secretText.charAt(0)是第一个 UTF-16 字符,等等。

您可以使用Charset将 UTF-16 视为字节序列进行转换。请Charset.forName("UTF-16")并使用encode方法。

最新更新