varchar(5)表示的是字符长度5,不是字节数
𤭢是一个字符占用了四个字节,我们存到数据库中也是最多能存5个𤭢
String length()方法返回的是代码单元数量
上图是String类中length源码,注意红框部分是代码单元的数量,那我们知道String的value其实是一个char[],那我们就可以推出 char = 代码单元
@Test
public void stringLengthTest() {
//𤭢 \uD852\uDF62
String str = "𤭢𤭢𤭢𤭢𤭢";
// 输出10
System.out.println(str.length());
// 输出5
System.out.println(str.codePointCount(0, str.length()));
}
这个例子就能看出因为1𤭢 = 2char,所以length返回的是10。
String类中还有一个codePointAt()这个返回的是代码点数量,也就是我们看到的字符数量