`
ddd0401
  • 浏览: 2486 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

web应用中post方式的编码问题讨论(非要用filter吗?)

阅读更多
问题概况:页面上表单中的中文数据在添加和修改操作时候都出现乱码(post方式)。

struts应用中,在页面发出请求后,数据到达Action的时候已经变成乱码。这表示数据在到达Action之前已经有问题了,因为那些中文数据是用的ActionForm中的一个属性对应的,所以我们把目光转移到ActionForm中该属性的set方法处。经过验证,ActionForm中的set方法接受的数据也是乱码。由此看来,这乱码是html数据的编码问题了?但是不应该啊。
我的环境设置如下:
1、整个工程文件都是采用utf-8编码。
2、jsp页面中也设置了编码:(以下2种方式都试过)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
3、在tomcat(6.0.16)的server.xml文件中我也做了如下设置:
<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443"
              URIEncoding="utf-8" useBodyEncodingForURI="true"/>
当然,eclipse(3.4)中有tomcat的server.xml运行副本(我这样理解的),一并修改之。为了确保设置有效性,特意查看了运行目录(****\For3.4\.metadata\.plugins\org.eclipse.wst.server.core\tmp0)里面相应位置的server.xml,设置也没有问题。
4、IE设置如下:(据说是此设置只影响到get方式,但是这里我也设置了下,如果不设置,根据你的OS默认来定)


思路:浏览器(我是IE6.0)把中文数据用指定的utf-8方式发送数据到servlet容器,servlet容器用指定的utf-8进行编码解码?那就不应该会有乱码啊?现实是乱码依旧,我查了些资料(google就是好啊),发现ActionForm接受的中文数据是iso8859-1编码,之后设置一个Filter进行转码:request.setCharacterEncoding("utf-8");使其数据进入servlet容器之前指定encode方式,此时ActionForm能正常接受utf-8编码的中文数据了,问题暂时解决。

我的问题就是中文数据经过client传输到server过程中对数据进行了encode为"iso8859-1"?网络只能传输2进制的1010..这样的数据,难道要转为2进制数据流非得用"iso8859-1"编码?还是我那样设置tomcat根本没设置对,tomcat里面还有别处需要设置吗?

希望大家讨论下,我理解错误的地方还请指正。
  • 大小: 6.8 KB
分享到:
评论
2 楼 ddd0401 2008-11-25  
sdh5724 写道

如果客户端已经是UTF8, 那么, 传输是没有问题, 有问题的是读参数的时候, 那时候系统需要知道, 进来的流是什么编码.

如果我不设置Filter的话,数据就会用iso8859-1的编码形式进入ActionForm了,需要这样new String(str.getBytes("iso8859-1"),"utf-8")才能在set方法处显示中文,我主要还是怀疑是tomcat设置问题,感觉是tomcat这层仍然用的iso8859-1对数据进行了encoding.
1 楼 sdh5724 2008-11-24  
如果客户端已经是UTF8, 那么, 传输是没有问题, 有问题的是读参数的时候, 那时候系统需要知道, 进来的流是什么编码.

相关推荐

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

    J2EE标准提供了多种方式来设置字符编码,包括在web.xml配置文件中设置全局编码、在Servlet或Filter中通过HttpServletRequest和HttpServletResponse接口的setCharacterEncoding()方法来设置请求和响应的编码,或者...

    Web后端开发-使用Filter过滤器技术,实现访问量统计-方法二使用web.xml配置的方式

    在Web后端开发中,Filter过滤器是一种非常重要的技术,它允许我们在请求被Servlet处理之前或之后进行拦截和处理。本篇文章将详细讲解如何通过使用`web.xml`配置文件来实现Filter过滤器,以实现对网站访问量的统计。...

    解决web项目中出现的乱码问题,很方便

    在开发Web项目时,乱码问题常常困扰着开发者,它涉及到字符编码的处理,这是Web应用中的一个常见但至关重要的问题。本方案提供了一个简洁有效的解决方法,通过一个Java文件和在`web.xml`配置文件中的简单设置,可以...

    编码过滤器

    综上所述,编码过滤器是Java Web开发中的重要组件,它确保了数据在GET和POST请求中的正确传输,通过在`web.xml`中配置,可以对整个应用或者特定URL路径进行全局的编码统一,有效防止乱码问题,提高应用的健壮性和...

    解决web中文乱码

    通过上述方式,你可以有效地解决Web应用中的中文乱码问题。当然,这只是众多解决方案之一,实际开发中还应考虑其他因素,如文件上传、API接口等场景下的编码问题。希望这个简单的Filter配置能够帮助你轻松应对Web...

    J2EE以GET和POST方式提交表单的乱码解决(受教了)

    总之,解决J2EE应用中GET和POST方式的乱码问题需要从服务器配置、页面编码以及代码处理三个方面入手,确保整个数据传输链路中的字符编码一致。在实际开发中,应养成良好的编码习惯,始终使用UTF-8作为默认字符编码,...

    解决post get 请求乱码问题

    解决 POST GET 请求乱码问题 在 Web 开发中,POST 和 GET 请求可能会出现乱码...解决 POST 和 GET 请求乱码问题需要对服务器和应用程序进行配置和编码处理。在实际开发中,我们需要根据具体情况选择合适的解决方法。

    中文乱码过滤器(包括GET和POST)

    中文乱码过滤器是解决Web应用中文乱码问题的有效手段,通过统一编码、自动识别和强制转码等方式,确保了数据在传输过程中的正确性。理解其工作原理并正确配置,可以极大地提高开发效率,减少因字符编码问题引发的...

    Java环境下Web程序中文乱码问题与对策.pdf

    Java环境下Web程序中文乱码问题与对策涉及了计算机编程领域中文字符编码的问题,以及如何在Java开发的Web应用中解决中文乱码问题。以下是对文档内容的详细解读。 1. 字符编码基础: 文档首先介绍了字符编码的基本...

    JavaWeb页面过滤器之编码过滤

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

    Servlet及jsp解决中文乱码问题

    4. **表单提交方式引起的编码问题**:不同的表单提交方式(GET与POST)对于编码的处理方式不同,如果不加以处理,也会导致乱码问题。 #### 三、解决中文乱码的具体方法 ##### 1. 数据库配置 - **MySQL数据库配置*...

    AJAX编码问题

    然而,在实际应用中,开发者常常会遇到AJAX请求中的编码问题,特别是POST方式提交数据时出现的乱码现象。本文将详细探讨AJAX编码问题,并提供几种解决方案。 #### 一、AJAX编码问题概述 AJAX(Asynchronous ...

    Java Web开发中的中文乱码问题分析及解决方案.pdf

    3. 数据库存储和检索的编码问题:数据库的字符集设置要与Java程序中的编码一致,否则在存取中文数据时,也会出现乱码。 为了解决这些问题,开发者可以采取以下策略: 1. 使用过滤器(Filter):在Servlet容器中...

    struts2 使用action属性接收中文参数(post提交)

    - 为了确保请求的正确编码,可以在web应用的过滤器(Filter)中进行强制转换,比如添加一个字符编码过滤器(CharacterEncodingFilter),并配置为在请求进入Action之前先进行编码转换。 3. **Action类的参数注解**...

    JSP-GET-POST传递的乱码问题

    - 对于整个Web应用,可以在web.xml中全局配置字符编码,确保所有请求都能正确处理。 - 解决方案:添加`&lt;filter&gt;`和`&lt;filter-mapping&gt;`,使用`CharacterEncodingFilter`来设定全局编码。 综上所述,解决JSP-GET-...

    超强过滤器彻底解决JSP-SERVLET中文参数GET-POST传递的问题(转)

    总结,"超强过滤器"是解决JSP-Servlet之间中文参数GET-POST传递问题的有效手段,通过统一设定请求的字符编码,确保在整个Web应用中中文数据能够正确无误地传输和处理。对于大型项目,这样的全局解决方案可以大大提升...

    tomcat中文编码问题

    这里的`URIEncoding`属性指定了URL中的查询字符串的编码方式,从而解决了GET请求中的中文乱码问题。 #### 三、手工编码处理 **1. 字符串编码转换** 在某些场景下,可能需要手动处理字符串的编码转换,例如从一种...

    用Filter来解决中文表单提交问题

    当接收到POST请求时,`doFilter()`方法会调用`request.setCharacterEncoding("GBK")`来设置请求的字符编码为GBK,这可以解决POST请求中的中文乱码问题。对于GET请求,由于HTTP规范要求GET请求的参数应在URL中编码,...

    webapi登陆验证四种方式.docx

    需要注意的是,如果在ASP.NET应用程序中使用,则该验证方式不支持跨域,因为Cookie无法跨域访问。 ##### 实现步骤 1. **定义过滤器类**:首先定义一个`FormAuthenticationFilterAttribute`类,该类继承自`...

    Tomcat PostGet 中文編碼處理方法

    在Web应用开发过程中,中文字符编码问题一直是个常见的技术难题,尤其是在处理HTTP请求中的POST和GET方法时。对于使用Apache Tomcat服务器的应用程序来说,确保中文字符正确编码是提升用户体验、避免数据损坏的关键...

Global site tag (gtag.js) - Google Analytics