在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;j<str.length();j++){
tempStr=String.valueOf(str.charAt(j));
if(StringUtils.isBlank(charset)){
//获取字节数
len=tempStr.getBytes().length;
}else{
//按指定编码获取字节数
len=tempStr.getBytes(charset).length;
}
//判断是否是汉字
if(len>1){
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();
}