最近做了一项目里面是用到了从action传值到servlet但是里面的参数值如果是中文的就会乱码,达不到效果,在网上找了好久终于发现了能解决此问题的方法,整理下
我的java项目里的struts.xml里的配置如下:
<action name="Resuccess" class="com.szallway.phr2.portal.action.RegisterSuccessAction">
<result name="success" type="redirect">
resetpass.do?mail=${mail}&pass=${pass}&name=${name}&account=${account}</result>
</action>
目的是要从Resuccess里传递mail,pass,name,account参数到resetpass这个Servlet里,可是当name为中文时就会出现乱码,在网上搜了下最终有效的解决办法是先在Resuccess这个action里把name的编码格式先转换下
String name = java.net.URLEncoder.encode(“罗祥”, "utf-8"); 这里利用的是java.net.URLEncoder来转换的,此处转换后输出的结果是:罗祥
然后我在resetpass这个Servlet里在进行转换
String name1 = java.net.URLDecoder.decode( request.getParameter("name"), "utf-8"); 这里利用的是java.net.URLDecoder来转换的,此处的输出结果就是:罗祥
String name= java.net.URLEncoder.encode("罗祥", "utf-8");
String name1= java.net.URLDecoder.decode(name, "utf-8");
这两条语句在同一个页面中的话,得到的结果是:
mytext: 罗祥
mytex2: 罗祥
网上也有些说是用下面这种方法也可以,可是我试了N遍了也不行
String name=new String(request.getParameter("name").getBytes("iso8859_1")); zhongguo=java.net.URLDecoder.decode(name,"utf-8");
2011-03-18 11:26:22