java通过字节数截取字符串,要保证汉字不被截半个

在java中一个汉字占几个字节?这要看你(或你系统默认)用的编码是什么。
byte是1个字节,char是2个字节,但是char里可以存一个汉字,这么说汉字就占用2个字节?
String类型里的汉字,按照编码格式的不同,分为2-4个字节的占用,
UTF-8占用3个字节,特别的占用4个字节。
GBK里汉字确实是占用2个字节。
UTF-16里汉字一般占2个字节,特殊的是4个字节。

public static String cutString(String str, int i, String charset) throws UnsupportedEncodingException {
		String tempStr=null;
		StringBuilder resultStr=new StringBuilder();
		int len=0;
		int sum=0;
		for(int j=0;j1){
				sum=sum+len;
				//判断字节数是否已越界
				if(sum<=i){
					resultStr.append(tempStr);
				}else{
					break;
				}
			}else{
				sum=sum+1;
				if(sum<=i){
					resultStr.append(tempStr);
				}else{
					break;
				}
			}
		}
		return resultStr.toString();
	}

你可能感兴趣的:(java)