解决JSP页面传参乱码的问题

1.1.jsp  代码如下

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

  
  <body>

 <form action="2.jsp" method="get">
  用户名:<input type="text" name="username"><br>
  密&nbsp;码:<input type="password" name="password"><br>
  <input type="submit" value="注册">
 
 </form>

 

  </body>
</html>

2. 2.jsp代码如下

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

  </head>
  
  <%String name = new String(request.getParameter("username").getBytes("iso-8859-1"),"gbk");
  String password = request.getParameter("password");
   %>
  <body>
  <h1>你的注册信息是</h1>
  <p>
  用户名:<%=name %><br>
  密&nbsp;码<%=password %>

 

  </body>
</html>

 

 

如果你要从一页面传过来的中文不是乱码的话,

String name = new String(request.getParameter("username").getBytes("iso-8859-1"),"gbk");
这样的接受参数的方法是一个通用的方法,不管是对get或post提交的方法都有效

象request.setCharacterEncoding("gbk");只能对post提交的方法管用

 

 

 

 

第二种方法就是写一个过滤器

 

 

Xml代码
  1. <filter>  
  2. <filter-name>encoding</filter-name>  
  3. <filter-class>  
  4.    filter.FilterEncoding   
  5. </filter-class>  
  6. <init-param>  
  7.   <param-name>encoding</param-name>  
  8.   <param-value>gbk</param-value>  
  9. </init-param>  
  10. </filter>  
[xml]  view plain copy
  1. <filter>  
  2.  <filter-name>encoding</filter-name>  
  3.  <filter-class>  
  4.   filter.FilterEncoding  
  5.  </filter-class>  
  6.  <init-param>  
  7.   <param-name>encoding</param-name>  
  8.   <param-value>gbk</param-value>  
  9.  </init-param>  
  10. </filter>  
[xml]  view plain copy
  1.  <filter-mapping><br>   <filter-name>set character encoding</filter-name><br>   <url-pattern>/*</url-pattern><br>  </filter-mapping>  

 

 

Java代码
  1. package filter;   
  2.   
  3. import java.io.IOException;   
  4. import javax.servlet.Filter;   
  5. import javax.servlet.FilterChain;   
  6. import javax.servlet.FilterConfig;   
  7. import javax.servlet.ServletException;   
  8. import javax.servlet.ServletRequest;   
  9. import javax.servlet.ServletResponse;   
  10. public class FilterEncoding implements Filter   
  11. {   
  12. protected String encoding;          // 接收字符编码   
  13. protected boolean ignore;            // 是否忽略大小写   
  14. protected FilterConfig filterConfig; // 初始化配置   
  15.   
  16. public void init(FilterConfig filterConfig) throws ServletException   
  17. {   
  18.   // 从web.xml文件中读取encoding的值   
  19.    encoding = filterConfig.getInitParameter("encoding");   
  20.   // 从web.xml文件中读取ignore的值   
  21.    String value = filterConfig.getInitParameter("ignore");   
  22.   // 以下三种情况均为忽略大小写   
  23.   if(value == null)   
  24.    {   
  25.     ignore = true;   
  26.    }   
  27.   else if(value.equalsIgnoreCase("yes"))   
  28.    {   
  29.     ignore = true;   
  30.    }   
  31.   else if(value.equalsIgnoreCase("true"))   
  32.    {   
  33.     ignore = true;   
  34.    }   
  35. }   
  36. // doFilter方法   
  37. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException   
  38. {   
  39.   if(ignore || request.getCharacterEncoding() == null)   
  40.    {   
  41.    // 如果为空先从web.xml中得到   
  42.     String encoding = selectEncoding(request);   
  43.    if(encoding != null)   
  44.     {   
  45.     // 设置字符集编码   
  46.      request.setCharacterEncoding(encoding);   
  47.     }   
  48.    }   
  49.   // 继续执行   
  50.    chain.doFilter(request, response);   
  51. }   
  52. // 得到字符编码   
  53. private String selectEncoding(ServletRequest request)   
  54. {   
  55.   return encoding;   
  56. }   
  57. public void destroy()   
  58. {   
  59.      
  60. }   
  61. }  
[java]  view plain copy
  1. package filter;  
  2.   
  3. import java.io.IOException;   
  4. import javax.servlet.Filter;   
  5. import javax.servlet.FilterChain;   
  6. import javax.servlet.FilterConfig;   
  7. import javax.servlet.ServletException;   
  8. import javax.servlet.ServletRequest;   
  9. import javax.servlet.ServletResponse;   
  10. public class FilterEncoding implements Filter   
  11. {   
  12.  protected String encoding;          // 接收字符编码  
  13.  protected boolean ignore;            // 是否忽略大小写  
  14.  protected FilterConfig filterConfig; // 初始化配置  
  15.   
  16.  public void init(FilterConfig filterConfig) throws ServletException   
  17.  {  
  18.   // 从web.xml文件中读取encoding的值  
  19.   encoding = filterConfig.getInitParameter("encoding");   
  20.   // 从web.xml文件中读取ignore的值  
  21.   String value = filterConfig.getInitParameter("ignore");   
  22.   // 以下三种情况均为忽略大小写  
  23.   if(value == null)   
  24.   {   
  25.    ignore = true;   
  26.   }  
  27.   else if(value.equalsIgnoreCase("yes"))   
  28.   {   
  29.    ignore = true;   
  30.   }   
  31.   else if(value.equalsIgnoreCase("true"))   
  32.   {   
  33.    ignore = true;   
  34.   }   
  35.  }   
  36.  // doFilter方法  
  37.  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException   
  38.  {  
  39.   if(ignore || request.getCharacterEncoding() == null)   
  40.   {  
  41.    // 如果为空先从web.xml中得到  
  42.    String encoding = selectEncoding(request);   
  43.    if(encoding != null)   
  44.    {  
  45.     // 设置字符集编码  
  46.     request.setCharacterEncoding(encoding);   
  47.    }  
  48.   }  
  49.   // 继续执行  
  50.   chain.doFilter(request, response);   
  51.  }   
  52.  // 得到字符编码  
  53.  private String selectEncoding(ServletRequest request)   
  54.  {   
  55.   return encoding;   
  56.  }   
  57.  public void destroy()   
  58.  {   
  59.     
  60.  }   
  61. }  

 

如果是url的get提交参数带中文的 
可以改下面这个文件,加入一个URIEncoding="GBK" 
X:/Tomcat 5.5/conf/Server.xml

Xml代码
  1. <Connector   
  2.         port="8080"   
  3.         redirectPort="8443"   
  4.         minSpareThreads="25"   
  5.         connectionTimeout="30"   
  6.         maxThreads="150"   
  7.         maxSpareThreads="75"   
  8. URIEncoding="GBK">   
[xml]  view plain copy
  1. <Connector   
  2.         port="8080"   
  3.         redirectPort="8443"   
  4.         minSpareThreads="25"   
  5.         connectionTimeout="30"   
  6.         maxThreads="150"   
  7.         maxSpareThreads="75"   
  8. URIEncoding="GBK">  

 

jsp头文件

Html代码
  1. <%@ page contentType="text/html;charset=

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值