Java中byte[]转换成String有数据丢失现象,原byte[]长度为6714转换成String被截断成6400,请教各位高手

该问题是在HTTP通信过程中发现的,本地接收到的字符数没问题,但是在转换成String过程中出问题了。字符串发送时采用UTF-8的格式,客户端默认也是采用UTF-8,以下... 该问题是在HTTP通信过程中发现的,本地接收到的字符数没问题,但是在转换成String过程中出问题了。字符串发送时采用UTF-8的格式,客户端默认也是采用UTF-8,以下方法试过,不管加不加字符集限制都是一样String bString = new String(byets); 展开
 我来答
百度网友9308069
2011-10-14 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1926万
展开全部
转换时要指定bytes的实际汉字编码,
比如 String s=new String(bytes, "GBK");
应该就能无误解决
如果还有问题,请给出数据样本,乱码请以十六进制或Base64提供出来,可以帮你分析
更多追问追答
追问
问题依旧,文件长度增长了91位应该是编码改变造成的。主要代码
BufferedHttpEntity bhe = new BufferedHttpEntity(httpResponse.getEntity());
BufferedInputStream bufferedInputStream = new BufferedInputStream(
bhe.getContent());
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bhe.writeTo(byteArrayOutputStream);
String bString = byteArrayOutputStream.toString();
追答
包括上面的代码样本,还要数据样本
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ymiqplgao
2011-10-14 · TA获得超过646个赞
知道小有建树答主
回答量:512
采纳率:0%
帮助的人:393万
展开全部
额 你也不想想String长度6400是什么概念
建议用StringBuffer
更多追问追答
追问
改用StringBuffer结果还是不行
追答
有没有想过是         该问题是在HTTP通信过程中发现的,   通信过程中管道中的数据最大长度是6400   也就是向管道写数据,没有达到6400之前流一直没有刷新,6400长度时流里边满了自动涮新了,后面的数据被丢弃了?
试着通信时先传整个字节长度(可用前四个字节),传递一定长度刷新一下,在接收方接收时,根据前四个字节读取指定长度的信息
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式