之间有什么区别
"hello world".getBytes("UTF-8");
和
Charset.forName("UTF-8").encode("hello world").array();
?
在大多数情况下,第二个代码生成一个字节数组,结尾处有0字节。
最佳答案
您的第二个片段使用ByteBuffer.array()
,它仅返回支持ByteBuffer
的数组。这可能比写入ByteBuffer
的内容长。
基本上,如果您想从byte[]
中获取String
,我会使用第一种方法:)您可以使用其他处理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')
关于java - Java字符串编码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25670368/