是这样的一个方法publicstaticString[]splitByByteSize(Stringcontent,intsize){byte[]bytes=content.getBytes();inttotalSize=bytes.length;intpartNum=0;if(totalSize==0){returnnewString[0];}if(totalSize%size==0){partNum=totalSize/size;}else{partNum=totalSize/size+1;}String[]arr=newString[partNum];intarrIndex=-1;for(inti=0;iif(i%size==0){ arrIndex++;arr[arrIndex]="";}arr[arrIndex]+=((char)bytes[i]);}returnarr;}Strings[]=splitByByteSize("水",15);intbyteLen=0;for(inti=0;ibyteLen+=s[i].getBytes().length; }byte[]bytes=newbyte[byteLen];intoffset=0;for(inti=0;iSystem.arraycopy(s[i].getBytes(),0,bytes,offset,s[i].getBytes().length); offset+=s[i].getBytes().length;}System.out.println("--"+newString(bytes));按字节拆分后等字节的放到String数组中。另外有个方法接收String数组后在拼成content原来的值。现在是如果有中文,按字节拆分会有乱码。但是感觉后面按照String数组拼成字符串应该不会乱码。但是还是乱码。请问怎么做才能在用返回的String数组拼成字符串不乱码。publicstaticvoidmain(String[]args)throwsUnsupportedEncodingException{Stringarr[]=splitByByteSize("abc刘defghijklmnopqrstuvwxyz",4);intbyteLen=0;for(inti=0;ibyteLen+=arr[i].getBytes().length; }byte[]bytes=newbyte[byteLen];intoffset=0;for(inti=0;iSystem.arraycopy(arr[i].getBytes("utf-8"),0,bytes,offset,arr[i].getBytes("utf-8").length); offset+=arr[i].getBytes("utf-8").length;}System.out.println(">>"+newString(bytes));}publicstaticString[]splitByByteSize(Stringcontent,intsize)throwsUnsupportedEncodingException{byte[]bytes=content.getBytes("utf-8");inttotalSize=bytes.length;intpartNum=0;if(totalSize==0){returnnewString[0];}if(totalSize%size==0){partNum=totalSize/size;}else{partNum=totalSize/size+1;}String[]arr=newString[partNum];intoffset=0;bytenewBytes[]=newbyte[size];for(inti=0;iSystem.arraycopy(bytes,offset,newBytes,0,size); arr[i]=newString(newBytes,"utf-8");offset+=size;}System.arraycopy(bytes,offset,newBytes,0,totalSize-offset);arr[partNum-1]=newString(newBytes,"utf-8");returnarr;}上面是新代码,但是还有有乱码
杨__羊羊
相关分类