gpt4 book ai didi

java - 将以单个空字节结尾的字节数组转换为 UTF16 编码字符串

转载 作者:行者123 更新时间:2023-11-30 02:19:59 25 4
gpt4 key购买 nike

我得到了一个字节数组,其中包含以UCS-2LE编码的字符串,通常,UCS-2LE字符串中的空字符串终止符会被编码为两个空字节(00 00),但有时只有一个,如下所示:

import java.nio.charset.Charset;
import java.util.Arrays;

class Ucs {
public static void main(String[] args) {
byte[] b = new byte[] {87, 0, 105, 0, 110, 0, 0};
String s = new String(b, Charset.forName("UTF-16LE"));
System.out.println(Arrays.toString(s.getBytes()));
System.out.println(s);
}
}

该程序输出

[87, 105, 110, -17, -65, -67]
Win�

我不知道为什么字符串的内部字节数组会增长以及未知的unicode来自哪里。我怎样才能消除它?

最佳答案

忽略最终奇数长度字节的黑客会有帮助吗?

int bytesToUse = b.length%2 == 0 ? b.length : b.length - 1;
String s = new String(b, 0, bytesToUse, Charset.forName("UTF-16LE"));

关于java - 将以单个空字节结尾的字节数组转换为 UTF16 编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47158352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com