Java字符串编码

两者之间有什么区别

"hello world".getBytes("UTF-8"); 

  Charset.forName("UTF-8").encode("hello world").array(); 

? 在大多数情况下,第二个代码产生一个最后有0字节的字节数组。

你的第二个片段使用ByteBuffer.array()ByteBuffer.array()返回支持ByteBuffer的数组。 这可能比写入 ByteBuffer的内容更长。

基本上,如果你想要一个Stringbyte[] ,我会使用第一种方法:)你可以使用其他方式处理ByteBuffer将其转换为byte[] ,但是假设String.getBytes(Charset)可用方便的,我只是用它……

ByteBuffer检索字节的示例代码:

 ByteBuffer buffer = Charset.forName("UTF-8").encode("hello world"); byte[] array = new byte[buffer.limit()]; buffer.get(array); System.out.println(array.length); // 11 System.out.println(array[0]); // 104 (encoded 'h')