A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

当用Servlet来处理http请求并产生返回的HTML页面时,如何使HTML页面中的中文
字符能够正常显示?
  javax.servlet.http.HttpResponse类用于产生返回页面.通过HttpResponse定义的
方法getOutputStream()可以获得ServletOutputStream的实例,这样用户就可以利用
ServletOutputStream.write方法向输出流中写入返回页面的内容. 但是ServletOutputStream
使用的是缺省的编码方式,如果要使返回页面中的中文字 符能够正常显示,最好显示地指定所
用的字符编码方式. 通常需要构造一个 OutputStreamWriter , 例程如下:
  public void doGet (HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException
  {
  res.setContentType("text/html";
  ServletOutputStream out = res.getOutputStream();
  OutputStreamWriter ow = new OutputStreamWriter(out,"GB2312";
  ow.write("这是测试";
  ow.flush();
  ow.close();
  }

1 个回复

正序浏览
本帖最后由 于星星 于 2012-7-22 12:49 编辑

  1.                 response.setContentType("text/html");               
  2.                 [color=Red]response.setCharacterEncoding("UTF-8");        //需要设置response的字符编码[/color]     
  3.                 request.setCharacterEncoding("UTf-8");        //这个是request的字符编码,当用户请求时如果有中文就会用这个编码         
  4.                 PrintWriter out =         response.getWriter();
  5.                 out.println("中国");
  6.                 out.close();
复制代码
以上的字符编码,我这里用的是UTF-8,在serlvet中有两个特别重要的对象,一个是HttpServletRequest ,和HttpServletResponse这两个对象,分别为用户请求和服务器响应。用的请求的数据会封装在request域中,而服务器响应的数据存放在response中,楼主现在是想把一个中文数据,返回到页面,所以是服务器响应用户,这就需要设置response的字符编码。而下面的request设置的编码是用户请求服务器时候如果有中文,会用这里设置的编码。所以写上万无一失。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马