servlet 乱码解决

2023年3月28日

get 和 post处理乱码不一样的哦。

用过滤器,get的话,还需要在tomcat中配置下的

现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。

1)JSP页面中显示中文乱码

     在JSP文件中使用page命令指定响应结果的MIME类型,如

     2)表单提交乱码   

     表单提交时(post和Get方法),使用request.getParameter方法得到乱码,这是因为tomcat处理提交的参数时默认的是iso-8859-1,表单提交get和post处理乱码问题不同,下面分别说明。
    (1)POST处理
    对post提交的表单通过编写一个过滤器的方法来解决,过滤器在用户提交的数据被处理之前被调用,可以在这里改变参数的编码方式,过滤器的代码如下:

Java代码  

 
   
 
package
      
import
      
import
import
import
import
import
import
      
public class SetCharacterEncodingFilter implements
      
protected String encoding = null;  
      
protected FilterConfig filterConfig = null;  
      
protected boolean ignore = true;  
      
    
public void
      
this.encoding = null;  
this.filterConfig = null;  
      
     }  
      
public void
"color: #ff0000;"> FilterChain chain) throws
      
if (ignore || (request.getCharacterEncoding() == null)) {  
       String encoding = selectEncoding(request);  
if (encoding != null) {  
        request.setCharacterEncoding(encoding);  
       }  
      }  
      
// Pass control on to the next filter
      chain.doFilter(request, response);  
      
     }  
public void init(FilterConfig filterConfig) throws
      
this.filterConfig = filterConfig;  
this.encoding = filterConfig.getInitParameter("encoding");  
"ignore");  
if (value == null) {  
this.ignore = true;  
else if (value.equalsIgnoreCase("true")) {  
this.ignore = true;  
else if (value.equalsIgnoreCase("yes")) {  
this.ignore = true;  
else
this.ignore = false;  
      }  
      
     }  
      
protected
      
return (this.encoding);  
      
     }  
      
    }

 

    文中红色的代码即为处理乱码的代码。
      web.xml文件加入过滤器

 

Xml代码  

 
   
 

Encoding

            example.util.SetCharacterEncodingFilter  


encoding
gbk



ignore
true

Xml代码  



 
   
 

Encoding
/*

(2) Get方法的处理
 tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设置。
 打开conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="GBK"。修改后的Connector设置为:

Java代码  

 
   
 
URIEncoding="GBK" />

  * 注意修改后重新启动tomcat才能起作用。

服务器托管,北京服务器托管,服务器租用 http://www.hhisp.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net

hackdl

咨询热线/微信 13051898268