0

我正在尝试将文本发送到字节但是当我打电话时:

Charset charset = Charset.forName("UTF-16");  
ByteBuffer bytes = charset.encode(toConvert.trim());
byte[] charsAsBytes = bytes.array();

我得到一个以-2和-1开头的数组。这些价值观从何而来?他们有什么意思吗,或者我可以跳过这些。默认字符集是 UTF-8。

4

1 回答 1

5

Java 中的字节被解释为带符号的二进制补码,因此 -2 和 -1 表示0xFE0xFF。在 UTF-16 编码文本的开头,这是字节顺序标记

引用维基百科:

在 UTF-16 中,可以将 BOM ( U+FEFF) 作为文件或字符流的第一个字符放置,以指示文件或流的所有 16 位代码单元的字节顺序(字节顺序)。

于 2013-09-09T12:21:37.457 回答