java - UTF-8 编码字符串的字节数不符合预期

标签 java

我无法理解:为什么给定的代码打印出 12 而不是 11 尽管 hello world 只有 11 个字符?

byte[] byteArray = Charset.forName("UTF-8").encode("hello world").array();
System.out.println(byteArray.length);

最佳答案

ByteBufferarray 方法返回支持缓冲区的数组,但并非所有字节都是有效的。仅使用不超过 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/

相关文章:

java - 如何使用原生sql获取现有表

java - Maven:打包复制文件夹后复制粘贴WEB-INF到根目录

java - JMS 队列轮询示例

java - Rest Api设计: resource archetypes,存储和 Controller

java - JTextPane 中未呈现 CSS 填充

java - 将 XML 解析为 Java 列表

java - 如何使用 Spark 定期刷新 Zeppelin? ( java )

java - 无法访问类 com.sun.org.apache.xerces.internal.impl.dv.util.Base64

java - 使用 acm 重构 java 中的 Hangman 输入检查

java - 在桌面应用程序中使用 JPA 实现?