在分割线之后的文章是前几日写的。当时在netbeans6环境中调试的确没有问题。但当把war文件直接布置到tomcat5.5和6.0上时,乱码问题再次出现。为此,又再次研究,发现是tomcat的问题,要加入发送时编码参数,因为tomcat默认编码是ISO-8859-1。而且Post和Get的处理竟然不一样。
之前的文章还留着吧,里面的代码还是可以直接用来测试的,记得post和get两种方法都测试。
Tomcat5.5和6.0.14都试过,问题基本得到解决。
1. 在tomcat的安装目录下的conf目录中的server.xml文件中“Connector”段加处URIEncoding="UTF-8"参数即可。比如
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
2. 而后在jsp文件中将pageEncoding也设为utf8。
3. 并用request.setCharacterEncoding("UTF-8")设置为一致的utf8(这里也可以将它放入一个过滤器中,这样不用每个页面都加;可能可以用页面的一个属性代替)。
再处理中文没有什么问题了,Post和Get都可以正常处理。
说下环境,nb6.01版,其自带的tomcat6环境,只对IE6而言。
直接上代码吧,非常少。关键在于sample1.jsp中的request.setCharacterEncoding("utf-8")一句。这里非常古怪,很多文章都说要用GBK等码,但这里只有用utf-8才行。
在一文章的谈ajax的中文参数时有谈到,可能这个是原因所在。下面是引用"解决url中文参数乱码的关键是这里,因为post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码,所以这里也要将请求参数设为utf-8"。
sample1.html
<
html
>
< head >
< title ></ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" >
</ head >
< body >
< form id ="form1" method ="post" action ="sample1.jsp" >
< div >
< input name ="code" type ="text" value ="中文代码" ></ input >< br />
< button id ="b1" type ="submit" > click </ button >
</ div >
</ form >
</ body >
</ html >
< head >
< title ></ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" >
</ head >
< body >
< form id ="form1" method ="post" action ="sample1.jsp" >
< div >
< input name ="code" type ="text" value ="中文代码" ></ input >< br />
< button id ="b1" type ="submit" > click </ button >
</ div >
</ form >
</ body >
</ html >
sample1.jsp
<%
...
@page contentType="text/html" pageEncoding="utf-8"
%>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<% ... request.setCharacterEncoding("utf-8"); %>
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" >
< title > JSP Page </ title >
</ head >
< body >
< h2 > <% = request.getParameter( " code " ) %> </ h2 >
</ body >
</ html >
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<% ... request.setCharacterEncoding("utf-8"); %>
< html >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=utf-8" >
< title > JSP Page </ title >
</ head >
< body >
< h2 > <% = request.getParameter( " code " ) %> </ h2 >
</ body >
</ html >