stream输出的是二进制流 没有对字符进行编码
writer输出的是文本的信息, 是进行过系统编码后的。

解决方案 »

  1.   

    增加一句
    response.setCharacterEncoding("GBK");
      

  2.   

    response.setCharacterEncoding("GBK"); 增加这句一点用处也没有.我试过了.
    如果用ServletOutputStream 输出的二进制信息中有中文,那就没有办法解决了吗???
      

  3.   

    String msg = "------第二种情况输出中文报错但输出英文正常------<br>";
    out.println(new String(str.getByte("GBK"),"ISO-8859-1"));
     
      

  4.   

    如果能用,就试一下
    response.setCharacterEncoding("ISO-8859-1");
    不能用,我就等着正确答案了! 
     
      

  5.   

    我找到方法了,可以用OutputStreamWriter封装 ServletOutputStream 类并用write(String)输出汉字字符串
    ServletOutputStream out = res.getOutputStream();
    OutputStreamWriter ow = new OutputStreamWriter(out,"GBK");
      

  6.   

    同意一楼
    ServletOutputStream似乎并不是给b/s应用用的吧?
    应该叫HttpServletOutputStream