是这样的一个方法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;i
2 回答

杨__羊羊
TA贡献1943条经验 获得超7个赞
首先,将string转换成byte流的时候,一定要指定编码(content.getBytes(utf-8)),否则在传输的时候,很有可能就是个杯具;其次,arr[arrIndex]+=((char)bytes[i])这个代码,在Java里面可以通过+=运算符将string和char相加?同上代码,对于双字节编码(例如中文),bytes[i]可能会是一个负数,强制转型成char,由于char的取值范围是0〜(2^16)-1,故此时会转换成一个正值,这样拆分后必然出现乱码,而且这个转换不一定是可逆的,此时再也无法由char恢复byte了,所以拆分后自然无法恢复。解决办法:如果是要跨JVM传输,建议直接传输byte数组,然后重组;如果不跨JVM传输,可先重组成string,然后传输,不过不是特殊需要,还是建议传输byte数组,最终在接收端重组。在这个过程中,有一点切记:转换过程中务必指定编码。这是我们项目组血的教训,后来重申的重要原则之一。byte[]array=content.getBytes("utf-8");//发送端Stringcontent=newString(array,"utf-8");//接收端
添加回答
举报
0/150
提交
取消