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