您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > JSP >

jsp 编码问题(2)

来源:未知 责任编辑:责任编辑 发表时间:2015-01-01 13:16 点击:

<meta http-equiv="expires"content="0"> 
<meta http-equiv="keywords"content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is mypage">
<!--
<link rel="stylesheet" type="text/css"href="styles.css">
-->

  </head>

  <body>
    <form action=servlet/Loginmethod=post>
      用户名:<input type=text name="username"size=20><br>
      密码:<input type="password" name="password"size=20><br>
      <input type=submitname="submit">
  </form>
  </body>
</html>
-------------------------------------------------------------

在Login.java Servlet源文件中:

public void doPost(HttpServletRequest request, HttpServletResponseresponse)
   throws ServletException,IOException {

 
  PrintWriter out = response.getWriter();
 out.print("<H>welcome you comehere!</H>");
 out.print("<br>");
 out.println(request.getParameter("username"));
 out.print("<br>");
 out.println(request.getParameter("password"));
 out.print("<br>");
  out.flush();
 System.out.println(response.getCharacterEncoding());
  out.close();
}

当输入中文的用户名,调用Login Servlet后,结果能正常显示中文,读者看到这里似乎感到很奇怪。

因为,在LoginServlet中并没有使用request.setCharacterEncoding("编码方式");指定特点的编码方式,也就是说Tomcat默认是使用ISO-8859-1的方式,怎么能正常显示中文了呢?问题出在IE浏览器上,请大家注意!因为,大家默认使用的都是中文IE浏览器,所以中文IE浏览器默认使用的字符集是charset=GBK,再请大家注意了,在上面这段LoginServlet代码中并没有指定response.setContentType("text/html;charset=GBK");这样的语句,也就是说IE浏览器认为,既然用户自己没有指定字符集,那么就使用默认的字符集,也就是默认使用了charset=GBK,

所以你所看到的中文显示,是IE浏览器默默帮你转换了,从ISO-8859-1到GBK的转换,也就是说IE浏览器帮你做了这么一句话:

out.println(newString(request.getParameter("username").getBytes("ISO-8859-1"),"gbk"));

再请大家注意,如果你在Login Servlet原码中加入了response.setContentType("text/html;charset=GBK");那么你就画蛇添足了,反而起到不好的效果,因为IE浏览器认为用户自己已经指定了特定的字符集方式,而且就是charset=GBK方式,所以就不需要从ISO-8859-1到GBK的转换,因为IE浏览认为你页面里的字符就应该是GBK编码方式的,但是其实不然,是ISO-8859-1方式的,所以反而显示的中文乱码了。

 

下来,我们把上面的小例子改一下:index.jsp页面中只指定charset方式:

<%@ pagecontentType="text/html;charset=utf-8"%>

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • JSP与Servlet
  • 自己动手写MiniBBS系列(基本篇)之用户登录
  • JSP取当前日期
  • JDBC 入门(一)
  • 打开一个jsp页面默认查询所有数据,调用action
  • 使用JSP标签库验证用户的输入(2)完
  • 自定义JSP标签(tag)浅议
  • WIN98/2000下的jsp服务器
  • JSP内建对象(二)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1