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

 

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

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编码:spa

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

经过URL传值到服务端。
2.在Action中再进行一次URL解码(由于在req.getParameter(..)时已经作过一次URL解码了).net

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

 

struts标签解决乱码问题:code

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

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