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

    xiaoxiao2022-07-04  115

    在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(); }
    最新回复(0)