zoukankan      html  css  js  c++  java
  • jsp中文乱码的问题

    分两种情况:

    1. GET方式

        这种方法目前我只找到一种方案解决,就是利用   

    1 value =new String(value.getBytes("ISO8859-1"),"UTF-8"); 

        因为JSP在传参数值时是用ISO8859-1,没办法,只能这样做。

        可以选择在页面上写,也可以选择在JAVA文件处理参数值时做转换。

    2. POST方式

        自己写一个Filter,来设置编码。参考http://heisetoufa.iteye.com/blog/227365

      

     1 package edu.whu.ress.CustomFilter;
     2 
     3 import java.io.IOException;
     4 
     5 import javax.servlet.Filter;
     6 import javax.servlet.FilterChain;
     7 import javax.servlet.FilterConfig;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.ServletRequest;
    10 import javax.servlet.ServletResponse;
    11 import javax.servlet.http.HttpServletRequest;
    12 
    13 public class EncodingFilter implements Filter  {
    14      protected FilterConfig filterconfig;
    15         private String targetEncoding = "UTF-8";
    16 
    17         public void init(FilterConfig config) throws ServletException {
    18             this.filterconfig = config;
    19             this.targetEncoding = config.getInitParameter("encoding");
    20         }
    21 
    22         public void doFilter(ServletRequest srequest, ServletResponse sresponse,
    23                 FilterChain chain) throws IOException, ServletException {
    24             HttpServletRequest request = (HttpServletRequest)srequest;
    25             
    26             request.setCharacterEncoding(targetEncoding);
    27             chain.doFilter(srequest,sresponse);
    28             sresponse.setCharacterEncoding(targetEncoding);
    29             
    30             
    31         }
    32        
    33         public void setFilterConfig(final FilterConfig filterConfig){
    34             this.filterconfig=filterConfig;
    35         }
    36 
    37         public void destroy() {
    38             this.filterconfig = null;
    39 
    40         }
    41 }

       在web.xml中增加filter与filtermapping,注意,用于编码的Filter要放在Struct的FilterDispatcher前面

     1 <filter>
     2   <filter-name>characterEncoding</filter-name>
     3   <filter-class>CustomFilter.EncodingFilter</filter-class>
     4   <init-param>  
     5         <param-name>encoding</param-name>  
     6         <param-value>UTF-8</param-value>  
     7     </init-param>  
     8     <init-param>  
     9         <param-name>forceEncoding</param-name>  
    10         <param-value>true</param-value>  
    11     </init-param> 
    12  </filter>
    13 
    14  <filter-mapping>
    15   <filter-name>characterEncoding</filter-name>
    16   <url-pattern>/*</url-pattern>
    17  </filter-mapping>

    这样基本就可以解决post方式中文乱码的问题。

  • 相关阅读:
    ASP.NET Web API中通过URI显示实体中的部分字段
    ASP.NET Web API中把分页信息放Header中返回给前端
    写一个针对IQueryable<T>的扩展方法支持动态排序
    Perl处理和收走子进程(退出状态码和wait)
    Perl多进程
    Perl信号处理
    大话西游之大圣娶亲中的至尊宝和紫霞仙子
    Perl List::Util模块用法详解
    Python面向对象:杂七杂八的知识点
    Python迭代和解析(5):搞懂生成器和yield机制
  • 原文地址:https://www.cnblogs.com/bluemaplestudio/p/2649854.html
Copyright © 2011-2022 走看看