form提交的表单中 中文字符 到action中取出是乱码如何解决?

时间:2022-06-20 07:49:11

因为jsp表单中提交的是中文字符,所以出现乱码

action中部分代码 :

 public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub

//取出form中的姓名和密码
String username=loginForm.getUsername();
String password=loginForm.getPassword();
                  //打印从form中取出的姓名
                  System.out.println(username);

 }

后台显示:??..???????


请各位不吝赐教,怎么解决这个乱码,用过滤器也没解决

8 个解决方案

#1


你怎么提交的?

js提交的话,encode 一下。

#2


或者 页面中设置
<% request.setCharacterEncoding("gb2312"); %>

取的时候
System.out.println(new String(name.getBytes("ISO-8859-1"),"GB2312"));

#3


引用 2 楼  的回复:
或者 页面中设置
<% request.setCharacterEncoding("gb2312"); %>

取的时候
System.out.println(new String(name.getBytes("ISO-8859-1"),"GB2312"));


都不行,还是乱码,不过乱码不是问号,还夹杂几个汉字 :?ㄦ鼎??

本打算和数据库取出的username对比,这下来个乱码就卡在这了

#4


看看表单是怎么提交的
1.是不是用js代码中location或href方式提交的?
2.表单的method属性是否存在,或者是不是定义为get了?
如果是上述情况,取数据时不要用new String(name.getBytes("ISO-8859-1"),"GB2312")的形式转换。否则用request.setCharacterEncoding("gb2312");即可

#5


引用 4 楼  的回复:
看看表单是怎么提交的
1.是不是用js代码中location或href方式提交的?
2.表单的method属性是否存在,或者是不是定义为get了?
如果是上述情况,取数据时不要用new String(name.getBytes("ISO-8859-1"),"GB2312")的形式转换。否则用request.setCharacterEncoding("gb2312");即可


不是js提交,还是不能解决

#6


tom猫做服务器?页面用的utf-8编码?form使用post提交?
如果是请看下server.xml配置文件中<Connector>(port属性为你的WEB访问端口,比如8080的)标签中有添加URIEncoding="UTF-8"。

#7


最近没有上,不知道你解决了没有,你发一下代码看看

#8


可以试下response.setCharacterEconding("utf8");这里设置为和界面编码一样。

#1


你怎么提交的?

js提交的话,encode 一下。

#2


或者 页面中设置
<% request.setCharacterEncoding("gb2312"); %>

取的时候
System.out.println(new String(name.getBytes("ISO-8859-1"),"GB2312"));

#3


引用 2 楼  的回复:
或者 页面中设置
<% request.setCharacterEncoding("gb2312"); %>

取的时候
System.out.println(new String(name.getBytes("ISO-8859-1"),"GB2312"));


都不行,还是乱码,不过乱码不是问号,还夹杂几个汉字 :?ㄦ鼎??

本打算和数据库取出的username对比,这下来个乱码就卡在这了

#4


看看表单是怎么提交的
1.是不是用js代码中location或href方式提交的?
2.表单的method属性是否存在,或者是不是定义为get了?
如果是上述情况,取数据时不要用new String(name.getBytes("ISO-8859-1"),"GB2312")的形式转换。否则用request.setCharacterEncoding("gb2312");即可

#5


引用 4 楼  的回复:
看看表单是怎么提交的
1.是不是用js代码中location或href方式提交的?
2.表单的method属性是否存在,或者是不是定义为get了?
如果是上述情况,取数据时不要用new String(name.getBytes("ISO-8859-1"),"GB2312")的形式转换。否则用request.setCharacterEncoding("gb2312");即可


不是js提交,还是不能解决

#6


tom猫做服务器?页面用的utf-8编码?form使用post提交?
如果是请看下server.xml配置文件中<Connector>(port属性为你的WEB访问端口,比如8080的)标签中有添加URIEncoding="UTF-8"。

#7


最近没有上,不知道你解决了没有,你发一下代码看看

#8


可以试下response.setCharacterEconding("utf8");这里设置为和界面编码一样。