代码如下,有更好的意见请留言.
public static void main(String[] args) throws Exception {
String encode = "UTF-8";
// 截取10字节,不出错
int sublen = 10;
// UTF-8字节
String srcStr = "出错出hh错出错hello1出错";
// 先转化成char
char[] srcStrChars = srcStr.toCharArray();
int cnt = 0;
Charset cs = Charset.forName(encode);
CharBuffer cb = CharBuffer.allocate(1);
ByteBuffer resultBuff = ByteBuffer.allocate(sublen);
for (int i = 0; i < srcStrChars.length; i++) {
char c = srcStrChars[i];
cb.put(c);
cb.flip();
ByteBuffer bb = cs.encode(cb);
cnt += bb.array().length;
if(cnt > sublen){
break;
}
resultBuff.put(bb);
cb.clear();
}
String result = new String(resultBuff.array(), encode);
System.out.println(result);
}