public static String subStrOfByte(String str, int num) { byte[] b = str==null?new byte[0]:str.getBytes(); int i,n=0,index=0,bl=b.length; index=bl>num?num:bl; for(i=0;i if(b[i]<0){ n++; } } String str1=null; if(n%2==0){ str1=new String(b,0,i); }else{ str1=new String(b,0,i-1); } return str1; } 要注意的是:gbk编码的汉字,每个汉字占2个字节;utf-8编码的汉字,每个汉字占3个字节。