`
mgoann
  • 浏览: 253422 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

HttpClient字符编码

阅读更多

HttpClient Character Encodings

 
简介

这篇文章主要是用来概述怎样使用HttpClient去处理字符编码以及怎样通过安全的编码方式使用HttpClient。主要包括三个部分:HTTP Headers,Request/Response Body和URLs。

HTTP Headers

Requst或者是Response的头部信息必须使用US-ASCII去格式化并且不能使用非US-ASCII字符。一般这不是什么问题,因为HTTP Headers是用来定义传送数据的,并不是传输信息内容的本身。

但有一个例外是cookies。一但cookies用HTTP Headers来传输的话,必须得保证其编码格式为US-ASII。关于这一点可以参考Cookies指南。

Request/Response Body

Request/Resposne body 可以用任何编码方式,默认是ISO-8859-1。编码可以在Headers的Content-Type里定义。例如:
Content-Type:text/html:charset=UTF-8
在上面这个例子中应用程序必须使用UTF-8编码方法将body中的内容转换为String。可以使用addRequestHeader方法来设置body中的content-type,而getResponseCharSet可以得到body中的content-type。

如果返回的结果预知是String的话,你可以使用getResponseBodyAsString方法取得,而此方法会自动按照Content-Type头信息中的编码格式解码,若Content-Type没有指定则按照ISO-8859-1来解码。

URLs

URLs标准(RFC1738)规定URLs只能包含US-ASCII编码的图形打印字符并且一个字符是八位。其中十六进制的FF不能在US-ASCII中使用以及1F代表控制字符;若是以上俩个进制位的字符必须被编码。

所有不能用8-bit ASCII编码的字符,因为不能被可靠的编码而不能在URL中使用。尽管如此,有些服务器仍然支持各种不同编码格式的双字节字符在URLs中使用,最通用的一种技术就是将这些双字节字符用UTF-8编码,将每一个双字节字符拆分成俩个单字节分别编码。尽管如此,没有按照标准来定义并且非常容易出错,所以建议URLs使用8-bit ASCII范围内的字符。

 

分享到:
评论

相关推荐

    使用httpClient组件解析html并解决字符编码

    使用HttpClient组件解析HTML并解决字符编码问题 在网络信息采集中,经常需要解析HTML页面以获取有用的信息。使用HttpClient组件可以轻松地实现这一任务。但是,在实际使用中,经常会遇到字符集编码乱码问题。本文将...

    彻底解决httpClient乱码问题

    1. **字符编码设置**:HttpClient默认可能不会自动处理服务器返回的字符集,因此需要明确指定编码。在发送请求时,可以使用`EntityUtils.toString(entity, "UTF-8")`来指定解码的字符集,确保与服务器响应的字符集...

    基于httpClient的文件编码导入系统

    在读取文件时,需要指定正确的字符编码,否则可能会导致乱码问题。例如,使用InputStreamReader配合FileInputStream读取文件时,需要明确指定文件的编码格式。 接着,导入系统中的路由设计,也就是ImportRouting,...

    java httpClient status 400错误的Header中字符不合法(csdn)————程序.pdf

    5. 在编写RequestInterceptor时,应考虑字符编码问题,尤其是当插入自定义Header时。 为防止类似问题再次发生,可以考虑以下改进措施: 1. 使用标准的HTTP Header字段名,避免自定义含有特殊字符的Header。 2. 对...

    HttpClient、乱码解决:实例

    1. 字符编码不一致:服务器和客户端对字符编码的理解不同,可能导致接收的数据出现乱码。 2. 编码转换不当:在网络传输过程中,数据可能需要进行编码转换,如果处理不当也会引发乱码。 三、解决乱码问题的方法 1. ...

    HTTPCLIENT

    在这个主题中,我们将深入探讨HTTPCLIENT、日志(LOGGING)以及编码解码(CODEC)相关的知识点。 首先,我们来关注HTTPCLIENT。Apache HttpClient是Apache软件基金会的一个项目,它提供了一组API,用于实现客户端的...

    httpclient入门必看

    关于字符编码的问题,当使用`getResponseBodyAsString`时,返回的字符串编码可能与预期不符,因为它是基于系统默认编码的。为了避免这个问题,可以在获取字节流后,使用特定的编码进行解码,例如:`new String...

    HttpClient4.2.1版本的Jar包

    10. **国际化和本地化**:HttpClient 4.2.1考虑了国际化和本地化需求,支持多种字符编码和语言环境。 在实际开发中,使用HttpClient 4.2.1时,开发者需要根据具体需求配置请求执行器、连接管理器、认证策略等,以...

    Httpclient依赖包

    9. **国际化与本地化**:HttpClient支持多种字符集和语言环境,能够正确处理非ASCII字符。 10. **易用性与扩展性**:HttpClient的设计允许开发者方便地替换或扩展其组件,如HTTP连接器、缓存策略、认证策略等,以...

    httpclient Demo 案例 含jar

    在这个“httpclient Demo 案例 含jar”中,我们将深入探讨如何使用HttpClient来处理POST请求时传递参数的字符原样问题,即避免参数被自动处理或转换。 HttpClient 4.5版本是一个稳定且广泛使用的版本,它包含了各种...

    Httpclient所需jar包

    在HttpClient中,这个库主要用于HTTP请求和响应中的数据编码和解码,比如当处理URL、查询字符串或者表单数据时。 2. **`commons-httpclient-3.0.1.jar`**: 这是HttpClient的核心库,包含了执行HTTP和HTTPS请求的...

    httpClient

    它扩展了Java的IO API,包含了诸如读写文件、转换流、比较文件、处理字符编码等实用功能。在处理HttpClient的请求和响应时, Commons IO库可能会用于读取或写入HTTP请求体和响应体的数据。 这些库的组合使用,可以...

    解决HttpClient中文乱码问题jar文件

    HttpClient中文乱码问题的核心在于字符编码不一致或者未明确指定。默认情况下,HttpClient可能使用ISO-8859-1作为编码,而我们的中文字符通常需要UTF-8编码才能正确显示。以下是一些解决HttpClient中文乱码问题的...

    HttpClient

    - `getMethod().getResponseBodyAsString()`:返回字符串形式的响应体,默认采用系统的默认字符集进行解码。 - `getMethod().getResponseBodyAsStream()`:返回 InputStream 类型的响应体,适用于大文件或流式数据...

    httpclient

    8. **国际化与编码**:HttpClient支持多种字符集,当处理不同语言的字符串时,需注意正确的字符编码,如UTF-8、GBK等,避免乱码问题。 在文件`my-httpclient-0.0.2.jar`中,可能包含了HttpClient的定制版本或者扩展...

    一个使用HttpClient调用天气预报接口的例程

    在Android中,如果服务器返回的数据不是UTF-8编码,而使用了GBK,那么在处理文本时需要进行正确的字符编码转换,以防止乱码问题。 5. **源码解析**: - `HttpGet`对象:创建一个HttpGet实例,设置其请求URL,用于...

    HttpClientUtils

    4. **请求头添加**:HttpClientUtils提供了设置请求头的方法,允许开发者自定义HTTP请求的头部信息,如Content-Type、Authorization等,这对于处理身份验证、设置字符编码等问题至关重要。 5. **二次开发**:...

    HttpClient应用实例2

    描述中的"解上傳亂碼"可能是指在使用HttpClient进行文件上传时遇到的字符编码问题。在HTTP上传过程中,如果文件名或数据包含非ASCII字符,可能会在传输过程中出现乱码。这通常涉及到字符集的设置,如确保服务器和...

Global site tag (gtag.js) - Google Analytics