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

时间:2013-09-09 12:16:13

标签: java character-encoding

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

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

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

1 个答案:

答案 0 :(得分:5)

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

引用维基百科:

  

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