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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝强勇 中级黑马   /  2013-3-1 17:12  /  1573 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    我将response的编码形式response.setCharacterEncoding("UTF-8");注释掉,重新访问浏览器,“中国你好”可以正常显示,查看浏览器编码形式为UTF-8.
public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
                //设置response码表,以控制response以什么码表向浏览器输出
                //response.setCharacterEncoding("UTF-8");
                //指定浏览器以什么码表打开数据
                response.setHeader("Content-type", "text/html;charset=UTF-8");
                String str = "中国你好";
                PrintWriter pw = response.getWriter();
                pw.write(str);
        }
    我又将response的编码形式response.setCharacterEncoding("ISO8859-1");重新访问浏览器,仍然可以正常访问,“中国你好”可以正常显示,查看浏览器编码形式为UTF-8.
        response.setCharacterEncoding("ISO8859-1");
        response.setHeader("Content-type", "text/html;charset=UTF-8");
    我又将上面两句代码顺序进行了交换,此时不能正常显示“中国你好”,显示为????,查看浏览器编码形式为ISO8859.
        response.setHeader("Content-type", "text/html;charset=UTF-8");
        response.setCharacterEncoding("ISO8859-1");
    我又将上面第二句代码的编码形式改为"gb2312",能正常显示“中国你好”,查看浏览器编码形式为gb2312.
        response.setHeader("Content-type", "text/html;charset=UTF-8");
        response.setCharacterEncoding("gb2312");
     我又将上面第一句代码的编码形式改为"gb2312",第二句改为能正常显示“中国你好”,查看浏览器编码形式为utf-8.
        response.setHeader("Content-type", "text/html;charset=gb2312");
        response.setCharacterEncoding("utf-8");
   
   

    所以,综上我认为设置response和指定浏览器编码形式的两种方法可以相互覆盖,即如果指定了response编码形式,这种形式也会在浏览器使用。如果设置了浏览器的编码形式,response也会使用这种编码形式,只是我通过小实验得到结论,请教大仙们给予肯定?

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

1 个回复

倒序浏览
补充一点:
        如果代码指设置response的编码形式,即:
                //下面这句代码注释了
                //response.setHeader("Content-type", "text/html;charset=utf-8");
                response.setCharacterEncoding("UTF-8");
        那么在火狐和IE中的效果还不一样,火狐就能正常显示,查看浏览器编码形式是utf-8。但在IE中就不能正常显示,查看浏览器编码形式是gb2312.
        我觉得火狐在设置response编码时,会自动设置servlet的关于编码的响应头,并为其赋值为response的编码形式。但IE在设置response编码时,因为没有setHeader方法,所以不能找到servlet的关于编码的响应头,也就没办法为其赋值,浏览器的编码形式仍然为其默认的gb2312.
        当然,以上都是我根据实验结构的猜测,还是请大仙们指教!!!

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马