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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值