HttpClient 请求的中文乱码问题
相关类库:
commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar
--给请求传递参数
HttpClient client = new HttpClient();
HttpMethod method= new PostMethod(url);
HttpMethodParams params = new HttpMethodParams();
params.setContentCharset("GB2312");
method.setParams(params);
方式一:
最简单的方式,直接输出页面,这里基本上不需要任何设置。
System.out.println(getMethod.getResponseBodyAsString());
方式二:
使用流方式读取
InputStream in = getMethod.getResponseBodyAsStream();
//这里的编码规则要与上面的相对应
BufferedReader br = new BufferedReader(new InputStreamReader(in,"GB2312"));
String tempbf;
StringBuffer html = new StringBuffer(100);
while ((tempbf = br.readLine()) != null) {
html.append(tempbf +"\n");
}
System.out.println(html.toString());
方式三:
当然还可以使用这样的方式,因为默认是使用ISO-8859-1,无非就是多进行了几次转码
InputStream in = getMethod.getResponseBodyAsStream();
//这里使用8859-1读取
BufferedReader br = new BufferedReader(new InputStreamReader(in,"ISO-8859-1"));
String tempbf;
StringBuffer html = new StringBuffer(100);
while ((tempbf = br.readLine()) != null) {
html.append(tempbf +"\n");
}
//将8859-1再次转成GB2312
System.out.println(new String(html.toString().getBytes("ISO-8859-1"),"GB2312"));
我还是建议使用第一种方法,但我认为本质上是一致的
对于请求部分还可以通过如下几种方式进行设置
getMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"GB2312");
getMethod.addRequestHeader("Content-Type", "text/html; charset=gb2312");
分享到:
相关推荐
在处理中文字符时,由于编码不一致或者处理不当,往往会出现乱码现象。以下是一些关键的知识点和解决方案: 1. **字符编码设置**:HttpClient默认可能不会自动处理服务器返回的字符集,因此需要明确指定编码。在...
以下是一个简单的使用HttpClient发送GET请求并处理乱码的示例: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet(url); httpGet.setHeader("Accept-Charset...
在Java开发中,HttpClient是一个广泛使用的HTTP客户端库...了解并应用以上知识点,可以帮助你有效地解决HttpClient在处理中文内容时的乱码问题。在实际项目中,确保每个环节都正确设置字符编码,是避免此类问题的关键。
在处理中文乱码时,可以通过设置请求头`charset`属性来指定编码,例如: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://example.com"); ...
这里指定了兼容浏览器的模式,并且设置了字符集为UTF-8,从而避免了中文乱码的情况发生。 #### 五、总结 通过上述代码示例,我们可以看到使用Apache HttpClient 4.x版本进行文件上传的过程。关键在于正确构建`...
在Android客户端向服务器提交请求时,遇到中文乱码问题是一个常见的困扰。这通常是由于编码格式不一致或处理不当导致的。以下将详细解释这个问题的原因、影响以及如何解决。 首先,我们要明白字符编码的基本原理。...
在Android中,如果服务器返回的数据不是UTF-8编码,而使用了GBK,那么在处理文本时需要进行正确的字符编码转换,以防止乱码问题。 5. **源码解析**: - `HttpGet`对象:创建一个HttpGet实例,设置其请求URL,用于...
Apache HttpClient是一个开源项目,它提供了一个灵活且功能丰富的API,用于执行HTTP请求和处理响应。HttpClient库不仅支持基本的HTTP方法如GET和POST,还支持更复杂的HTTP特性,如Cookie管理、重定向处理、认证等。...
在Java编程中,中文乱码问题是一个常见的挑战,特别是在处理URL时。URL编码是导致中文乱码的关键因素,因为URL不支持非ASCII字符。本文将深入探讨如何在Java中有效地解决URL中文乱码问题。 首先,我们需要理解URL...
在处理中文字符时,可能会出现乱码问题。我们可以通过设置字符编码来解决: ```java httpGet.setHeader("Accept-Charset", "UTF-8"); httpGet.setHeader("Content-Type", "application/x-www-form-urlencoded;...
本实例主要关注如何解决在使用HttpClient进行文件上传时可能出现的乱码问题。 在HttpClient中,乱码问题通常出现在两个方面:请求参数的编码和响应内容的解码。请求参数的编码涉及到URL编码,特别是包含非ASCII字符...
然而,当GET请求的参数包含中文字符时,由于编码格式不一致或者处理不当,可能会出现中文乱码的问题。本篇文章将详细介绍如何快速解决这一问题。 首先,我们需要理解乱码产生的原因。在HTTP请求中,URL(统一资源...
2.3.1获取内容中文乱码 /** * 通过url获取网页内容, * 解决中文乱码问题 * @param httpUrl * @return */ public static String downloadPage(String httpUrl) { StringBuffer pageBuffer = new ...
这可能会导致中文乱码的问题。为了避免此类问题,可以指定字符编码: ```java String charset = "UTF-8"; // 或者 "GBK", "ISO-8859-1" 等 String responseString = new String(getMethod.getResponseBody(), ...
在开发Web应用时,我们经常会遇到中文乱码问题,特别是在JSP与MySQL的结合使用中。这个"mysql.rar_JSP+Mysql_中文乱码"压缩包提供的资源旨在帮助开发者解决此类问题。以下是对这个问题的详细解释和解决方案。 首先...
HttpClient提供了一个简单的API,允许开发者轻松地发送HTTP请求和处理响应。 HttpClient解析HTML 在解析HTML时,需要首先设置HttpClient的字符集参数,以便正确地解析HTML页面的内容。在上面的代码中,我们使用了`...
我们使用 `new StringEntity(jsonParam.toString(), "utf-8")` 创建了一个新的 `StringEntity` 实例,并指定字符编码为 UTF-8,以避免中文乱码问题。 设置 `StringEntity` 的内容类型为 `application/json`,这是...
5. **处理中文文件名**:在写入ZIP条目时,确保正确设置文件名的编码,通常使用UTF-8,以避免乱码问题。 6. **关闭流**:下载完成后,关闭所有打开的输入/输出流,确保资源得到释放。 这个过程不仅实现了文件的...
在Android应用开发中,进行HTTP请求时可能会遇到中文乱码的问题。这通常发生在发送或接收包含中文字符的数据时。在本篇文章中,我们将探讨如何解决Android中HTTP请求中文乱码的常见问题,并通过一个具体的例子来说明...
如果直接使用默认的UTF-8解码,可能会导致中文字符无法正确显示。 在Android 2.3.3版本中,系统支持的最小API级别是10,这意味着该例子适用于较旧的设备。在较新的Android版本中,应优先考虑使用 HttpURLConnection...