`

fiter过滤字符编码不起作用

 
阅读更多

在服务器的web.xml配置以下filter,目的是把以.do结尾的请求设置成GBK编码。

<filter>
        <filter-name>CharacterEncodingFilterGBK</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GBK</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilterGBK</filter-name>
        <url-pattern>*.do</url-pattern>
    </filter-mapping>

但是,这个filter能不能起作用,要看服务器是怎么实现HTTP规范和servlet规范。比如说resin服务器,如果HTTP请求头带有

  1. Content-Type:
    application/x-www-form-urlencoded; charset=UTF-8

那么这个filter基本是不起作用,服务器对所有请求都以UTF-8来解码。resin默认会以HTTP请求头的charset来解码,请求头不带charset的话,上面的filter就会起作用了,但如果是tomcat的话,就不知道能不能起作用,具体没验证过。

 

各大浏览器如ie、firefox、chrome对ajax请求默认会以UTF-8编码之后再提交到服务,即使手动设置请求头的charset为gbk,有的浏览也是无视的。但ie不同,ie对设置请求头的charset是会起效的。如果提交请求的js是用utf-8编码,请求头把charset设置为gbk,用ie提交到服务器的话,这里可能会出现乱码,要注意一下。

 

 

说明一下http请求头Content-type的作用:(参考这里:http://www.studyofnet.com/news/166.html

Content-type: application/x-www-form-urlencoded;charset:UTF-8

有关Content-Type属性值可以如下两种编码类型:

(1)“application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。 然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。

(2)“multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。

当提交为单单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。

在Content-Type属性当中还是指定提交内容的charset字符编码。一般不进行设置,它只是告诉web服务器post提交的数据采用的何种字符编码。

一般在开发过程,是由前端工程与后端UI工程师商量好使用什么字符编码格式来post提交的,然后后端ui工程师按照固定的字符编码来解析提交的数据。所以这里设置的charset没有多大作用。

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    字符编码过滤器 字符编码转换 post字符转换

    在处理网络请求时,如果服务器和客户端的字符编码不一致,就需要进行转换以避免乱码。例如,POST请求的参数可能是GBK编码,而服务器期望的是UTF-8,这时就需要一个转换机制,比如使用Java的`new String(byte[], "GBK...

    字符编码过滤器

    在Java Web开发中,字符编码过滤器(Character Encoding Filter)起着至关重要的作用。它确保了请求和响应数据在处理过程中使用一致的字符编码,从而避免乱码问题。本篇文章将详细探讨Java过滤器(Filter)的概念,...

    解决字符编码的过滤器

    1. **统一性**:通过在Web应用启动时即设置好字符编码规则,可以避免后续请求处理过程中可能出现的编码不一致问题。 2. **灵活性**:可以根据具体需求灵活配置编码格式,如UTF-8、GBK等。 3. **易于维护**:集中管理...

    java字符编码监听器

    在Java代码中,我们可以自定义过滤器类继承`javax.servlet.Filter`,然后在`doFilter`方法中设置请求的字符编码。例如: ```java public void doFilter(ServletRequest request, ServletResponse response, ...

    Java过滤器,字符过滤,标签过滤

    使用`List`作为过滤字符库是一种常见的方法,将需要过滤的字符存储在列表中,然后在处理请求时检查每个字符是否在列表内。 标签过滤则是为了防止HTML标签被恶意利用,比如XSS(跨站脚本攻击)。通过过滤或转义HTML...

    【Struts】设置字符编码过滤器,解决乱码问题收藏

    在开发Java Web应用程序时,尤其是使用Struts框架时,经常遇到的一个问题是字符编码不一致导致的乱码问题。本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解...

    编码过滤器

    由于不同的字符集编码可能导致数据乱码,编码过滤器的职责就是统一这些编码,防止因编码不一致产生的问题。 在Java Web环境中,过滤器(Filter)是Servlet规范的一部分,它允许开发者在请求到达目标Servlet或JSP...

    JavaWeb页面过滤器之编码过滤

    在JavaWeb开发中,页面编码过滤是一个至关重要的环节,它主要解决的是网页中字符编码不一致导致乱码的问题。在给定的标题“JavaWeb页面过滤器之编码过滤”和描述中,我们可以深入探讨JavaWeb中的编码过滤器,以及...

    字符编码

    在“java中用过滤器解决字符编码问题.doc”的文件中,我们可以预期会找到关于如何在Java web应用中利用过滤器(Filter)解决字符编码问题的详细步骤。过滤器是Servlet技术的一部分,可以拦截请求和响应,对数据进行...

    ssh框架乱码过滤器Filter

    例如,客户端(通常是浏览器)和服务器端使用的字符编码不匹配时,就会出现乱码。对于表单提交,数据通常是POST方式传递,若未正确设置字符编码,中文字符就无法正常显示。 SSH框架中的Struts2负责处理HTTP请求,它...

    JavaEE Filter全局编码过滤器

    在这个场景下,"全局编码过滤器"是指一个专门用于处理字符编码问题的Filter,它的目的是确保所有进入和离开服务器的数据都采用统一且正确的字符编码,避免因为编码不一致导致乱码问题。 Filter的工作原理是基于请求...

    struts2.0字符编码使用过滤器

    Struts2.0字符编码问题在开发Web应用时是一个常见的挑战,尤其是在处理用户输入时,如果编码不统一,可能会导致乱码现象。本示例通过使用过滤器(Filter)来解决这个问题,确保了数据在传输过程中的正确编码,从而...

    过滤字符串中的HTML标签

    例如,某些标签可能没有闭合,或者使用了特殊字符编码。 3. **性能考虑**:对于非常大的字符串,频繁使用正则表达式进行匹配和替换可能会导致性能下降。在这种情况下,可以考虑使用流式处理或其他更高效的算法。 ...

    过滤器 乱码,非法字符,权限

    过滤器可以用来统一设置字符编码,确保数据在传输过程中的正确性。例如,通过设置`HttpServletRequest`的字符编码为`UTF-8`,可以避免中文乱码的问题。在过滤器的`doFilter`方法中,可以调用`request.setCharacter...

    使用filter对字符进行过滤

    在本案例中,我们关注的是如何使用`Filter`来过滤字符,确保数据的安全性和正确性。下面我们将详细探讨`Filter`的工作原理以及如何实现字符过滤。 `Filter`是Java Servlet API的一部分,定义在`javax.servlet....

    javaFilter自定义编码过滤器

    * doFilter() 方法:在 doFilter() 方法中,我们首先获取了 HttpServletRequest 和 HttpServletResponse 对象,然后将 encode 设置为请求和响应的字符编码。最后,我们将请求和响应传递给下一个过滤器。 * destroy()...

    监听器访问计数过滤非法字符

    这可以防止由于字符编码不一致导致的乱码问题,提高用户体验。 过滤器的配置通常在Web应用的web.xml文件中完成,定义了过滤器类、映射路径等信息。当一个请求匹配到过滤器的映射规则时,过滤器就会按照定义的顺序...

    基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法

    基于tomcat8 编写字符编码Filter过滤器无效问题的解决方法 在基于tomcat8 的Web应用程序中,字符编码问题是常见的问题之一。特别是在处理POST请求时,中文字符可能会出现乱码的情况。为了解决这个问题,我们可以...

    jsp字符过滤器

    然而,为了保证应用程序的安全性和稳定性,通常需要对用户输入的数据进行过滤和验证,这就是JSP字符过滤器的作用。字符过滤器主要用于防止恶意用户通过提交特殊字符或者执行SQL注入、跨站脚本攻击(XSS)等行为,保护...

    如何配置Filter过滤器处理JSP中文乱码

    当请求到达服务器时,Filter会自动设置请求和响应的字符编码,确保数据在传输过程中不发生乱码。同时,Tomcat服务器配置的`URIEncoding`确保URL中的中文字符也能正确解码。记住,根据实际项目需求,你可能需要调整...

Global site tag (gtag.js) - Google Analytics