代码如下,有更好的意见请留言.
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); }
?
原文:http://full-stack.iteye.com/blog/2174226