数据库是utf-8编码的。检索的结果直接在后台就放入inputstream中,但是出现了乱码。其中的代码如下:endUserTrackList = endUserTrackManager.searchForList(endUserTrackDto);//从数据库检索StringBuffer a = new StringBuffer("");
if (endUserTrackList != null && endUserTrackList.size() > 0) {
  for (EndUserTrack eut : endUserTrackList) {
    a.append(eut.getOrder_code() + " ").append(",");
    a.append(eut.getOrder_amount()).append(",");
    //a.append(eut.getEnd_user_name()).append(","); 
    a.append(new String(eut.getEnd_user_name().getBytes(), "utf-8")).append(",");
    a.append(df.format(eut.getCreate_date())).append(",");
    a.append(getOrderStatusStr(eut.getOrder_status())).append("\n");
  }
}
inputStream = new ByteArrayInputStream(a.toString().getBytes());上面的代码在客户端打开就出现乱码

解决方案 »

  1.   

    建议你用Reader来代替InputStream。   
      因为Reader是按字符读,而InputStream是按字节读。   
      在java中内部编码都是unicode,不论是中文,英文,数字还是其它都是一个字符。
      

  2.   

    inputStream = new ByteArrayInputStream(a.toString().getBytes("UTF-8")); 根据编码不同,你自己修改里面的UTF-8, 也许GBK更适合你
      

  3.   

    inputStream = new ByteArrayInputStream(a.toString().getBytes("UTF-8")); 这里是不是出了问题,编码格式要统一
      

  4.   

     a.append(new String(eut.getEnd_user_name().getBytes("iso-8859-1"), "utf-8")).append(","); 
      

  5.   

    bufferedReader   &   bufferedWriter
      

  6.   

    bufferReader = new bufferReader(inputStream(),"GBK")
    bufferReader = new bufferReader(inputStream(),"UTF-8")