jsp 表单post提交数据 乱码 ,无限崩溃中。。。 求解

漂亮的石头 2011-08-10 09:38:47
test.jsp


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<form action="result.jsp" method="post">
<input type="text" name="message" />
<button type="submit" >提交</button>
</form>


result.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%=request.getParameter("message") %>

EncodingFilter.java

String encoding = filterConfig.getInitParameter("encoding");//UTF-8
req.setCharacterEncoding(encoding);
res.setCharacterEncoding(encoding);
chain.doFilter(req, res);


过滤器也去了, 输出编码也是utf-8 ,jsp 页面中中文可以显示, 可是为啥表单提交后(post) 就老是乱码呢。。。。 tomcat 配置文件也改过了, 还是乱码。
还有可能是什么问题造成的呢???
急 啊。。。
...全文
6672 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
炙手可热 2013-11-05
  • 打赏
  • 举报
回复
那过滤器 岂不是毫无意义。每个action都要 String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8")
__奇奇老爹 2013-07-29
  • 打赏
  • 举报
回复
引用 32 楼 henghui_cao 的回复:
POST传过去的都是单字节数据.所以POST传来的数据编码都是ISO-8859-1的单字节数据.因此英文和数字不会有乱码...在这种情况下.过滤器和server.xml里的设置都是无效的.当然request.setCharacterEncoding()也是无效的因为setCharacterEncoding的原理跟过滤器一样; 正确的取法: String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8")
POST 表单提交获取乱码这个问题终于解决了,谢谢了!!! 原来是 POST传来的数据编码都是ISO-8859-1的单字节数据 !!!
CIOSOFT 2013-07-02
  • 打赏
  • 举报
回复
正确的取法: String str = new String(request.getParameter("message").getBytes("ISO-8859-1"),"UTF-8")
superlvtao 2013-06-22
  • 打赏
  • 举报
回复
POST传过去的都是单字节数据.所以POST传来的数据编码都是ISO-8859-1的单字节数据.因此英文和数字不会有乱码...在这种情况下.过滤器和server.xml里的设置都是无效的.当然request.setCharacterEncoding()也是无效的因为setCharacterEncoding的原理跟过滤器一样; 正确的取法: String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8") 这个答案是正确的
Showay518 2013-05-14
  • 打赏
  • 举报
回复
引用 32 楼 henghui_cao 的回复:
POST传过去的都是单字节数据.所以POST传来的数据编码都是ISO-8859-1的单字节数据.因此英文和数字不会有乱码...在这种情况下.过滤器和server.xml里的设置都是无效的.当然request.setCharacterEncoding()也是无效的因为setCharacterEncoding的原理跟过滤器一样; 正确的取法: String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8")
这位的方法我试了,已经解决我的乱码问题!我的情况是这样的: 1、SSH2 框架,struts.xml 配置只配了   
<constant name="struts.i18n.encoding" value="UTF-8" />
,其他的编码配置都没配(暂时还没 get 请求提交中文参数的情况,不知是否会乱码); 2、jsp 页面 post 提交一个表单,该表单包含 address 字段,其字段值为中文; 3、action 接收该字段,即   
private String address;
getter...
setter...
4、直接打印输出发现是乱码,就按这位说的方法试了一下:
String str = new String(address.getBytes("ISO-8859-1"),"UTF-8");
然后打印输出 str 字段,结果正常。 最后,谢谢这位兄台的指导方法。
henghui_cao 2012-07-04
  • 打赏
  • 举报
回复
POST传过去的都是单字节数据.所以POST传来的数据编码都是ISO-8859-1的单字节数据.因此英文和数字不会有乱码...在这种情况下.过滤器和server.xml里的设置都是无效的.当然request.setCharacterEncoding()也是无效的因为setCharacterEncoding的原理跟过滤器一样;
正确的取法: String str = new String(getParameter("message").getBytes("ISO-8859-1"),"UTF-8")
huangbx_ 2011-08-12
  • 打赏
  • 举报
回复
是不是web.xml配置过滤器顺序的问题!
mail_ricklee 2011-08-12
  • 打赏
  • 举报
回复

<%@ page language="java" import="java.util.*"
pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />



request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
  • 打赏
  • 举报
回复
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
少了一句话、、
你找找、
也不知道 什么=true 、
忘了
hackersun12345 2011-08-12
  • 打赏
  • 举报
回复
JSP文件保存时要以UTF-8或GB,否则设了编码白搭
w510306501 2011-08-12
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 swordmars 的回复:]
post应该不会出现问题呀,会不会flter没匹配到jsp页面的ulr呢?
[/Quote]
认可
漂亮的石头 2011-08-11
  • 打赏
  • 举报
回复
怎么解决呢???
噢噢噢噢 2011-08-11
  • 打赏
  • 举报
回复
所有文件、项目、全部设成utf8?
在jsp/servlet的上用System.out.println();把获得的参数输出看看?
firebug看一下post的的参数有问题没?
rjzou2006 2011-08-11
  • 打赏
  • 举报
回复
web.xml可以设置吧。
五哥 2011-08-11
  • 打赏
  • 举报
回复
我觉得lz应该google baidu一下 ,jsp 乱码问题 ,印象更深刻 ,如果只是别人回答 ,即使解决,还是稀里糊涂的
hc_baby 2011-08-11
  • 打赏
  • 举报
回复
楼主检查一下web.xml中配置过滤器的顺序。字符编码过滤器一定要是最前面的
GIS__ 2011-08-11
  • 打赏
  • 举报
回复
果断用AJAX吧
gegewozai 2011-08-11
  • 打赏
  • 举报
回复
post 提交就使用过滤器处理乱码呗
softroad 2011-08-11
  • 打赏
  • 举报
回复
参数用js转码,urlencode啥来着,后台解码。
SwordMars 2011-08-11
  • 打赏
  • 举报
回复
post应该不会出现问题呀,会不会flter没匹配到jsp页面的ulr呢?
加载更多回复(17)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧