解决传递接收参数是中⽂的乱码问题
今天解决了⼀个头疼的bug,是⼀段jsp写的代码,其中使⽤到了de()对要传递的中⽂进⾏编码。可是接收到的字符串却是乱码。最令⼈抓狂的就是这段代码在有的机器上运⾏正常,可是在某些机器上死活也不能正常运⾏。因为对jsp和⽹页都不是很熟所以查了很久才发现原因。
最后发现是这段代码没有规范的使⽤java.URLEncoder,虽然使⽤了de()对要传递的中⽂进⾏编码,可是接收页⾯接收时没有使⽤java.URLEncoder.decode()进⾏解码。导致在有的机器上运⾏正常,⽽有的就出错。
下⾯贴⼀下解决这个问题参考的⽂章:
使⽤de()可以对要传递的中⽂进⾏编码
a.在传参数之前先把参数进⾏转码:de(param);
取值时⽤语句java.URLDecoder.decode(param);再转回中⽂
b.在你的Tomcat⽬录-->conf⽬录--&l⾥出这段:
<Connector
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
url编码处理debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
<!--在⾥边加上这个参数-->
URIEncoding="gb2312"
/>
例如:
<%@ page contentType="text/html;charset=gb2312" %>
<a href="ds.jsp?url=<%=de("编码的是这⾥","GB2312")%>">点击这⾥</a>
<%
Parameter("url")!=null)
{
Parameter("url");
str=java.URLDecoder.decode(str,"GB2312");
str=new Bytes("ISO-8859-1"));
out.print(str);
}
%>
若,字符编码为utf-8也可以实现.或者在此段代码中,不写出字符编码也可以(只写⼀个参数)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。