JSP中文乱码解决

来源:互联网 发布:flexpaperflash.js 编辑:程序博客网 时间:2024/04/30 00:57

 

在分割线之后的文章是前几日写的。当时在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>

 

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>
原创粉丝点击