我无法理解:为什么给定的代码打印出 12
而不是 11
尽管 hello world
只有 11 个字符?
byte[] byteArray = Charset.forName("UTF-8").encode("hello world").array();
System.out.println(byteArray.length);
最佳答案
ByteBuffer
的array
方法返回支持缓冲区的数组,但并非所有字节都是有效的。仅使用不超过 limit
的字节。以下按预期返回 11:
int limit = Charset.forName("UTF-8").encode("hello world").limit();
System.out.println(limit);
关于java - UTF-8 编码字符串的字节数不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39623188/