解决浏览器向服务器传递参数时中文乱码问题

 

解决Get方式的中文参数的乱码问题:
方式1:
前提是Tomcat是默认的配置:

key = new String(key.getBytes("iso8859-1"), "utf-8");

方式2:
在Tomcat的server.xml中设置:

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" 
redirectPort="8443"
URIEncoding="utf-8" (这是重点,表示获取参数解码时默认使用的编码类型)
/>

方式3:(推荐)
1.在页面中进行两次URL编码:

param = encodeURI(param);
param = encodeURI(param);

通过URL传值到服务端。
2.在Action中再进行一次URL解码(因为在req.getParameter(..)时已经做过一次URL解码了)

String param = URLDecoder.decode(req.getParameter(param)); 

 

struts标签解决乱码问题:

在struts标签中这样写,就可以进行两次URL编码了,前提是在struts.xml中要设置一下:
<!-- 设置为在OGNL中可以调用静态方法 -->
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />

<s:a action="processDefinitionAction_delete" onclick="return delConfirm()">
    <s:param name="key" value="%{@java.net.URLEncoder@encode(key, 'utf-8')}"></s:param>
    删除
</s:a>

 

posted @ 2014-11-08 00:14  黄豆芽  阅读(382)  评论(0编辑  收藏  举报