编码到不同的charachter集Java时,数组中的随机字节

Dea*_*ean 0 java character-encoding

我正在尝试将文本写入字节但是当我打电话时:

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

我得到一个以-2和-1开头的数组.这些价值来自哪里?他们是什么意思,或者我可以跳过这些.默认字符集是UTF-8.

jlo*_*rdo 5

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

引用维基百科:

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