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范围内的字符。

 

你可能感兴趣的:(html,应用服务器)