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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄锋 黑马帝   /  2011-9-14 17:10  /  2207 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当用Servlet来处理http请求并产生返回的HTML页面时,如何使HTML页面中的中文字符能够正常显示?

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

7 个回复

倒序浏览
黑马网友  发表于 2011-9-14 17:31:55
沙发
在前台表单拿到数据的时候,在servlet里面转换一下编码
例如:[code]String keywords=new String(request.getParameter("keywords").getBytes("iso-8859-1"),"gb2312");[/code]返回页面也配一个encoding

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-15 00:18:01
藤椅
发个响应头,告诉浏览器该查哪个码表
回复 使用道具 举报
黑马网友  发表于 2011-9-15 12:37:01
板凳
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技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-16 19:39:51
报纸
模拟响应头:<link http-equiv="ContentType" content="txt/html;charset=gb2312">

或者使用request也可以。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-16 21:51:08
地板
你的页面文件时用什么编码写的,就在你的页面文件中使用什么编码,保证一致,这样一般就不会出现乱码的情况了,跟具体使用什么编码没什么太大关系,gb2312和utf-8都可以,出现乱码的原因是你编写的时候使用的编码和你页面文件中指定的编码方式不一致。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-19 09:44:21
7#
在你返回的语句前面加入如下一行代码就O了
response.setCharacterEncoding("utf-8");
回复 使用道具 举报
葛锐 黑马帝 2011-9-19 16:23:29
8#
public void doPost(HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException{
      response.setCharacterEncoding("utf-8");//最上面加上这一行就可以了 也可以是GB2312
   }
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
同时你要注意你的页面pageEncoding="ISO-8859-1"是不是也改成 utf-8 或者gb2312

再着 读取数据的时候 可以尝试用request.setCharacterEncoding("utf-8");
[ 本帖最后由 葛锐 于 2011-09-19  16:28 编辑 ]
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马