我将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也会使用这种编码形式,只是我通过小实验得到结论,请教大仙们给予肯定?
|