utf-8中有多少字节有一个字符串?

时间:2016-07-24 17:32:45

标签: java utf-8

我的程序在java中有这个代码:

 public static int NumOfStringByte(String str) throws UnsupportedEncodingException{
        return str.getBytes("UTF-8").length+2;
    }

... 它是否正确? 如何计算字符串的字节数?

1 个答案:

答案 0 :(得分:0)

在Java中,调用getBytes('UTF-8')已经准确地为您提供了UTF-8编码格式的字节,因此您应该只返回该字节数组的长度。添加到该数字的唯一原因是,如果要添加一些额外的字节(例如用于NUL终止或包含byte-order mark);但是,如果你这样做,你应该选择一个更清晰的功能名称。

但请注意,UTF-8编码格式的长度 NOT 与String在内存中的占用空间相同。 Java使用UTF-16编码格式将其字符串存储在内存中。实际用于存储字符串的字节数为str.length() * 2(基本上,str.length()为您提供底层缓冲区中char个对象的数量,每个char为2个字节)。