我正在尝试将文本发送到字节但是当我打电话时:
Charset charset = Charset.forName("UTF-16");
ByteBuffer bytes = charset.encode(toConvert.trim());
byte[] charsAsBytes = bytes.array();
我得到一个以-2和-1开头的数组。这些价值观从何而来?他们有什么意思吗,或者我可以跳过这些。默认字符集是 UTF-8。
我正在尝试将文本发送到字节但是当我打电话时:
Charset charset = Charset.forName("UTF-16");
ByteBuffer bytes = charset.encode(toConvert.trim());
byte[] charsAsBytes = bytes.array();
我得到一个以-2和-1开头的数组。这些价值观从何而来?他们有什么意思吗,或者我可以跳过这些。默认字符集是 UTF-8。
Java 中的字节被解释为带符号的二进制补码,因此 -2 和 -1 表示0xFE
和0xFF
。在 UTF-16 编码文本的开头,这是字节顺序标记。
引用维基百科:
在 UTF-16 中,可以将 BOM (
U+FEFF
) 作为文件或字符流的第一个字符放置,以指示文件或流的所有 16 位代码单元的字节顺序(字节顺序)。