08.1 request对象|request.getParameter中文乱码解决

发表日期:2015-02-15 21:20:08 | 来源: | | 浏览(698) 分类:JSP基础

实例:

form.html内容:

<form action="request.jsp" method="post">

<input type="text" name="pname"/><input type="submit"/>

</form>

request.jsp内容:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%=request.getParameter("pname") %>//接收表单参数pname

当我们提交字母数字时正常,但是当我们提交中文时,却显示乱码!解决方法:

原因:自从Tomcat5.x开始,GET和POST方法提交的信息,Tomcat采用了不同的方式来处理编码,对于POST请求,Tomcat会仍然使用request.setCharacterEncoding方法所设置的编码来处理,如果未设置,则使用默认的iso-8859-1编码。而GET请求则不同,Tomcat对于GET请求并不会考虑使用request.setCharacterEncoding方法设置的编码,而会永远使用iso-8859-1编码。

方法一:(GET方法提交可能还是不能解决)

request.setCharacterEncoding("UTF-8");//设置接收的字符编码

【重点】但是记得必须将此代码放置到页面代码中任何request的上方,最好放到页面代码顶部,否则无效啊!

方法二:转换为字节数组:

<%=new String(request.getParameter("pname").getBytes("ISO-8859-1"),"UTF-8") %>

原因是表单提交时url默认是ISO-8859-1的字符编码提交方式,我们用字符数组以ISO-8859-1编码接收,然后输出为utf-8的字符串。【对get提交乱码很有效】


集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。