Java字符串编码
两者之间有什么区别
"hello world".getBytes("UTF-8");
和
Charset.forName("UTF-8").encode("hello world").array();
? 在大多数情况下,第二个代码产生一个最后有0字节的字节数组。
你的第二个片段使用ByteBuffer.array()
, ByteBuffer.array()
返回支持ByteBuffer
的数组。 这可能比写入 ByteBuffer
的内容更长。
基本上,如果你想要一个String
的byte[]
,我会使用第一种方法:)你可以使用其他方式处理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')