站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题struts中传值给form时得到乱码

struts中传值给form时得到乱码

摘要: struts中传值给form时得到乱码


在下在用tomcat5.0+eclipse+mysql5+struts1.1写一个程序时,在表单输入中文,或者日文等,我在eclipse调试时看到form中相应的属性得到的是乱码,存到数据库里再取出来,再显示在页面中也是乱码,我的mysql里设了 utf-8,jsp页面中也设置了 utf-8字符集,怎么处理用户输入各种编码的字符而不产生乱码问题?有哪位高手能帮我解决一下?
还有就是我用显示了一条记录,在这条记录后面有个删除按钮,我想删掉这条记录,请问怎么获得要删除这条记录所需要的关键字值?

回答得好一定加分~~


用个过滤器在里边设定一个request的字符集应该就可以了


写一个过滤器Servlet设置request.setChar什么Encoding为gb2312就OK了。


在web.xml里配置个过滤器.
删除用多选框吧.多选框的value="",就是把ID传到后台处理.


我现在能得到前台传过来的正确的编码形式的参数了,但再传给数据库处理后返回的值又显示为乱码,在网上找了资料,把mysql的自符集设为utf8,把tomcat 里的url修改为 url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"
可是修改后,我再调试原来的程序,在执行executeQuery()时发生了异常,请高手再指教,谢谢。


String accounts=request.getParameter("Username").toString();
byte temp[] =str1.getBytes("ISO-8859-1");
accounts=new String(temp);
out.print(accounts);

其中的"Username"是表单相应的名字,用上面的方法就可以解决表单传过来的乱码了


我的页面指定了使用utf-8,在不经过数据库的时候,我能从页面里面得到正确的值,也能显示正确的数据,没有乱码的现象,如果我的数据经过数据库后,显示的就是问号。我把数据库的字符集设为utf-8,就会出现执行executeQuery()时发生异常。


form传送参数方式有2种
1.get方式的解决方法是:

最后那加入URIEncoding='GBK' 就可以了。
2.加入过滤器能够解决的问题,针对post提交有效

在%Tomcat 5.0/webapps/servlets-examples/WEB-INF/classes/filters下找到
SetCharacterEncodingFilter.java ,之后在你的工程中建一个名filters的包,包里就放SetCharacterEncodingFilter.java,之后在Web.XML中,加入


Set Character Encoding
com.cecp.filter.SetCharacterEncodingFilter

encoding
GBK


ignore
true




Set Character Encoding
/*


以上我已经在我的电脑上测试成功~!


glpyh() 谢谢你给予这么详细的回答。我确实是用和你那样的方法解决了从表单传参出现乱码的问题,但我现在的问题是怎么和数据库正确传递数据。谢谢。


改为url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"试试。


在数据库的URL中, 如果使用Hibernate, 则在hibernate.cfg.xml配置中

jdbc:mysql://localhost/bookstoressh
useUnicode=true&characterEncoding=gb2312

这里使用mysql里面的bookstoressh数据库,请注意url中的useUnicode=true&characterEncoding=GB2312.这是mysql特有的
这个是我一个朋友总结的,给你贴出来,希望对你有点帮助吧


试过了,还是不行,报了更严重的错误,http://localhost:8080/***,它提示*** is not availabe


glpyh(),我没有使用Hibernate,谢谢你。


一种方法是:webserver 中设 encoding='gbk' or 'gb2312'
另一种很土的方法:对request.getParameter('para') 的字符转码


可能是mysql的问题.
建库时要加上使用编码,如下

SET NAMES 'gbk';
CREATE DATABASE `databaseName`
CHARACTER SET 'gbk'
COLLATE 'gbk_chinese_ci';

USE `databaseName`;
SET NAMES 'gbk';
然后导入你的表.


↑返回目录
前一篇: 问问大家用JSP进行WEB开发所用的环境?
后一篇: 保留小数位数?