今天在用HttpClient的PostMethod模拟浏览器用表单的post方法发送数据给服务器的时候,如果数据是中文,服务器接收的是乱码,然后看了很多乱码的文章,最后解决了,现在总结下.
1.首先搞清楚客户端是用那种编码方式将数据编码后提交的.
浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8
这样服务器端就可以知道form里的字符是怎么编码的了。
要注意的是这里的charset=UTF-8是默认的,如果这个HTML代码里有<meta http-equiv="Content-Type" content="text/html; charset=GBK" />,那么此HTML的form表单将以GBK的编码方式提交数据,其实表单提交数据使用的编码方式是可以指定的.那现在用HttpClient,根本就没有浏览器和具体的HTML代码,其实HttpClient的PostMethod对象里已经有设定编码方式的方法
PostMethod post = new PostMethod("http://iteye.com");
post.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");
这里的编码方式可以随意指定,开始就是因为没有写这段,采用了Httpclient默认的编码方式,所以出现乱码,这里设置编码方式的方法也不唯一.ajax使用post方法提交数据的编码方式的设定也和这个类似.
2.服务器端是如何选择那种编码方式来对数据进行解码的呢.
首先我用request.getCharacterEncoding()来看表单提交数据所使用的编码方法,奇怪的是用浏览器提交request.getCharacterEncoding()是null,而用HttpClient提交request.getCharacterEncoding()的值是UTF-8,和客户端指定的编码方式一致,后来google了下,原来是浏览器做的手脚,IE是不将表单提交数据使用的编码方式写到HTTP头部发送出去的.我发现如果用HttpClient的post提交数据,编码方式指定的话,request.getCharacterEncoding()是能得到值的,而且request对象也用此编码方式解码,不用request.setCharacterEncoding("")指定;如果request.getCharacterEncoding()是null,就要request.setCharacterEncoding("")指定编码方式,要和你提交时设定的编码方式一致.然后request.getParameter("")的值就是你想要的了.(这里有可能有误的地方请指出)
分享到:
相关推荐
解决方法:解决中文乱码问题的方法有两种,一种是使用POST方式,另一种是使用GET方式。 1、POST方式:在POST方式中,我们可以使用request.setCharacterEncoding("UTF-8")来指定解码方式为UTF-8。这将使服务器使用...
下面我们将深入探讨如何解决J2EE环境下GET和POST方式提交表单时出现的乱码问题。 首先,我们要理解GET和POST的区别。GET方式会将表单数据附加到URL后面,而POST方式则将数据放在请求体中。由于GET方式的限制,它...
### Ajax开发过程中表单提交数据出现乱码及解决办法 在进行Ajax开发的过程中,经常会遇到一个令人头疼的问题:表单提交的数据出现乱码。...遵循以上原则,可以有效避免在Ajax开发过程中表单提交数据时出现乱码问题。
在处理中文字符时,尤其是文件名或表单数据包含中文的情况下,可能会遇到乱码问题。本主题主要围绕如何解决在Windows环境下,通过CMD命令行调用curl上传文件时出现的中文乱码问题。 首先,`curl` 是一个强大的...
对于POST请求,主要涉及表单提交数据和JSP页面自身编码两方面: 1. **表单提交数据**:确保表单的`enctype`属性设置为`application/x-www-form-urlencoded`或`multipart/form-data`。默认情况下,`enctype`为`...
当我们处理表单提交时,可能会遇到数据乱码的问题,尤其是在涉及非ASCII字符集(如中文、日文或韩文等)时。这通常与字符编码设置不正确有关。下面,我们将深入探讨这个问题,并提供解决方案。 首先,乱码问题通常...
get post提交表单中文乱码过滤器(java)
在进行Web开发时,特别是使用Java Server Pages (JSP)技术时,经常会遇到表单提交数据出现乱码的问题。这个问题主要出现在从客户端(如浏览器)提交的数据到服务器端的过程中。本文将详细介绍如何在JSP页面中正确...
在 Spring MVC 框架中,处理表单提交数据时可能会出现乱码问题,尤其是在使用 POST 或 GET 请求时。这篇文章将分享解决表单post,get到springMVC后台乱码的问题的方法,并对相关知识点进行详细的解释。 乱码问题的...
POST方法是HTTP协议中的一个重要组成部分,它与GET方法不同,GET方法通常用于获取资源,而POST方法则用于向服务器发送数据,比如在表单提交时,浏览器就会使用POST方法将表单数据发送到服务器。使用POST提交工具,...
本文主要针对两种常见的HTTP请求方法——POST和GET,分析了在form表单提交数据时遇到的中文乱码问题,并提供了相应的解决方案。 一、POST方式提交数据的中文乱码问题 当用户通过表单以POST方式提交包含中文字符的...
Java表单提交中文乱码问题是一个常见的开发中遇到的困扰,尤其在处理用户输入时,如果编码设置不当,中文字符可能会显示为乱码。解决这个问题需要理解字符编码的基本原理,并采取适当的策略。以下是一些主要的解决...
当提交表单采用 GET 方法时,提交的数据作为查询字符串被附加到 URL 的末端,发送到服务器,此时在服务器端调用 setCharacterEncoding() 方法也就没有作用了。我们需要在得到请求参数的值后,自己做正确的编码转换。...
在使用Post方式提交表单时,如果没有指定提交的编码格式,tomcat将使用iso8859-1编码格式进行提交,这将导致乱码。 解决方法有三种: A. 在接受参数时进行编码转换,例如使用`String str = new String(request....
JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示...解决 JSP 中文乱码问题需要从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交表单等。
在使用MyEclipse开发工具进行Web应用开发时,尤其是采用ExtJS框架结合Ajax技术进行前后端数据交互的过程中,可能会遇到一个常见的问题:即通过Ajax发送带有中文字符的数据时,后端接收到的数据出现乱码现象。...
1. **统一字符编码**:确保客户端提交数据和服务器接收数据时使用相同的字符集编码。可以通过设置`; charset=UTF-8"%>`来实现这一点。 2. **请求参数编码处理**: - 对于`POST`请求,可以在请求处理之前调用`...
本问题中,用户遇到了一种特殊的情况,即在一个使用UTF-8编码的页面上填写的表单数据在提交到使用GB2312编码的服务器后出现乱码,从而导致查询结果异常。 `accept-charset` 是HTML表单元素`<form>`的一个属性,它...
- 这样设置后,无论客户端采用哪种编码方式提交数据,Tomcat都会将其转换为UTF-8编码,从而避免乱码问题。 3. **重启Tomcat服务**: - 修改完配置文件后需要重启Tomcat服务器使更改生效。 #### 四、进一步探讨 ...
当使用Ajax进行数据提交时,如果服务器端接收到的数据出现乱码,这通常是因为客户端和服务器端之间的字符编码设置不一致造成的。在默认情况下,浏览器会使用自己的字符编码(如ISO-8859-1)对表单数据进行编码,而...