Ext表单提交乱码解决方案

Ext表单提交乱码问题解决方案:

         网上的解决方案有的是将所有的文件编码统一换成Utf-8,还有就是修改Ext-base.js中的源代码,在Ext3.0中那些问题都已经被解决但是还是会有乱码现象,因此尝试本文的解决方案:
         假如提交的中文字符放在str中,则 str = new String(URLDecoder.decode(str).getBytes("ISO-8859-1"),"UTF-8");

通过这一句话就可以解决乱码问题。

原因:在提交的过程中,默认的编码格式为ISO-8859-1,因此出现问题,强制转换一次即可。

第二种方法(比第一种好用):

        在配置formpanel的时候,配置选项:enctype:'multipart/form-data;charset=utf-8',其中'multipart/form-data表示将要上传文件,关键的是设置字符集为Utf-8(;charset=utf-8),注意在上传文件时一般将fileUpload选项配置成true,但是配置此项后enctype无效,因此为了保证不出现乱码,应该不配置fileUpload,而在enctype中指明类型为上传文件。enctype与fileUpload配置在效果上是等效的。

终极解决方案:

       设置一个过滤函数,每当请求或者回复的时候自动进行编码。在web.xml中设置一个监听方法的配置用来进行编码:

<filter> 
   <filter-name>setEncoding</filter-name> 
   <filter-class>com.guet.function.filter.ToUnicode</filter-class>  
 </filter>

然后配置其作用范围,我们配置的是对所有的请求都进行编码转换。

 <filter-mapping>
    <filter-name>setEncoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

配置说明,过滤器的名字为setEncoding,注意两个名字都一样。第一个指明其实现的类,第二个指明其过滤的范围。

类的具体实现为:

package com.guet.cab.base.Filter;

import java.io.*;
import javax.servlet.*;

public class EncodingFilter implements Filter {
 public void init(FilterConfig filterConfig) throws ServletException {

 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  try {
   request.setCharacterEncoding("UTF-8");
   response.setContentType("text/html;charset=UTF-8");
  } catch (Exception e) {
  }

  chain.doFilter(request, response);
 }

 public void destroy() {

 }
};

   有了第三种终极的解决方案,就可以在第二种方法中将uploadData设置为true,如果这项不配置,可能出现不能上传文件的情况。

                                                                                  by:rush date:2011年4月19日 17:41:25

                                                                                  modify Date :2011年4月19日 22:54:01


如果觉得本文好的话就分享给你的朋友把!
原文地址:https://www.cnblogs.com/rushoooooo/p/2032333.html