jsp和Servlet之间传值出现乱码的解决方案

来源:互联网 发布:好好说话 软件 编辑:程序博客网 时间:2024/05/21 07:01
jsp+Servlet的形式,在jsp页面向后台发送的请求里包含中文时,后台采用 
String name = request.getParameter("name")接收到的是乱码,我在网上找了很多资料,有网友说request.getParameter是默认采用ISO8859-1来编码的,必须进行转换: 

我总结了一下,解决中文乱码大概有以下几种方式: 

1、采用decode()方法 
Java代码 
  1. java.net.URLDecoder.decode(s)  



2、采用设置字符集的方式 
Java代码
  1. request.setCharacterEncoding("utf-8");  


3、在页面上定义charset的字符集 
Java代码
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  


4、在web.xml文件里定义编码,同时在CoreFilter类里定义编码为utf-8 
Java代码
  1. <filter>  
  2.    <filter-name>encodingFilter</filter-name>  
  3.       <filter-class>com.demo.filter.CoreFilter</filter-class>  
  4.     <init-param>  
  5.        <param-name>encoding</param-name>  
  6.        <param-value>utf-8</param-value>  
  7.     </init-param>  
  8.    </filter>  
  9.       
  10.    <filter-mapping>  
  11.       <filter-name>encodingFilter</filter-name>  
  12.           <url-pattern>/*</url-pattern>  
  13.       </filter-mapping>  


5、在form表单里定义编码 
Java代码
  1. accept-charset="utf-8" onsubmit="document.charset='utf-8';"  


6、更改ContentTypes的值 
改变myeclipse里ContentTypes的值为utf-8 

7、改变tomcat字符集 
通过改变server.xml文件里的字符集来接收中文 
Java代码
  1. <Connector port="8080" protocol="HTTP/1.1"   
  2.            connectionTimeout="20000"   
  3.            redirectPort="8443"   
  4.            URIEncoding="UTF-8"/>  


8、采用转码的方式 
Java代码
  1. nameCode = new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");  



补充:如果是Servlet向页面发送的数据中包含中文,可以采用如下方式解决: 
Java代码
  1. response.setContentType("text/html;charset=utf-8");
0 0
原创粉丝点击