众所周知,UTF-8是变长编码,一个字符占1-4字节都有可能,
这给我们数据入库时的长度校验带来了不少麻烦,因为数据库中声明的
Varchar2(1000)
并不代表能够存放1000个字符,而是只能存放1000个字节。
其实,这个问题可以通过String.getBytes来解决,
如下代码:
String str="中文123";
System.out.println(str.length());
try {
System.out.println(str.getBytes("utf-8").length);//中、文 各占三字节,123各占1字节
System.out.println(str.getBytes("GBK").length);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
输出结果为
5
9
7
只要在Java中强制指定”utf-8”编码获取字符串的字节数组,就可以得到该字符串在UTF-8下的字节长度。
请参考。