Java中byte[]转换成String有数据丢失现象,原byte[]长度为6714转换成String被截断成6400,请教各位高手
该问题是在HTTP通信过程中发现的,本地接收到的字符数没问题,但是在转换成String过程中出问题了。字符串发送时采用UTF-8的格式,客户端默认也是采用UTF-8,以下...
该问题是在HTTP通信过程中发现的,本地接收到的字符数没问题,但是在转换成String过程中出问题了。字符串发送时采用UTF-8的格式,客户端默认也是采用UTF-8,以下方法试过,不管加不加字符集限制都是一样String bString = new String(byets);
展开
2个回答
展开全部
更多追问追答
追问
问题依旧,文件长度增长了91位应该是编码改变造成的。主要代码
BufferedHttpEntity bhe = new BufferedHttpEntity(httpResponse.getEntity());
BufferedInputStream bufferedInputStream = new BufferedInputStream(
bhe.getContent());
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bhe.writeTo(byteArrayOutputStream);
String bString = byteArrayOutputStream.toString();
追答
包括上面的代码样本,还要数据样本
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额 你也不想想String长度6400是什么概念
建议用StringBuffer
建议用StringBuffer
更多追问追答
追问
改用StringBuffer结果还是不行
追答
有没有想过是 该问题是在HTTP通信过程中发现的, 通信过程中管道中的数据最大长度是6400 也就是向管道写数据,没有达到6400之前流一直没有刷新,6400长度时流里边满了自动涮新了,后面的数据被丢弃了?
试着通信时先传整个字节长度(可用前四个字节),传递一定长度刷新一下,在接收方接收时,根据前四个字节读取指定长度的信息
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询