这样当然会随机乱码,直接以字符流读取就好了。
如果你还是要用字节流读取的话,那你要一次性把所有的字节全部读取之后,然后再转成字符串就好了。乱码的原因是你每次读取1024个字节,如果正好第1024和1025两个字节是组成一个汉字的,你想想你这样会不会乱码?

解决方案 »

  1.   

    你好,谢谢你!这个问题我大致猜到了,但我需要一个解决方法!你说的用字符流在我这不行的!因为服务端是别人用c写好的,他返回的数据使得我无法确定何时结束循环,可能它没返回结束标记!因此我只能使用字节流!
      

  2.   

    PushbackInputStream,有个unread(byte[] b, int off, int len)方法,允许把多读的内容退回去。
      

  3.   

    既然流的长度是未知的,用指定长度的字节数组也不合适。那就换成按字节读呗,全部读完了再对收到的字节进行处理
      

  4.   

    问题已经解决,谢谢各位,该结贴了,我手机看了半天,没找到结贴的地方。