httpclient4.x编码问题

问题描述

我在使用httpclient4.x的时候发现如下代码能够有一定几率识别网页的编码。DefaultHttpClient hc = new DefaultHttpClient();HttpGet httpget = new HttpGet("http://www.baidu.com/");HttpResponse response = hc.execute(httpget);HttpEntity entity = response.getEntity();entity = new BufferedHttpEntity(entity);String htmltext = EntityUtils.toString(entity);只要用String encode = EntityUtils.getContentCharSet(entity);就能验证网站编码有没有被识别。但是有一些网站却无法自动识别编码,比如www.hudong.com,它的getContentCharSet(entity)返回值是null。这是为什么呢?httpclient本身的识别编码是采用了怎么样的机制呢?

解决方案

引用原理是这样的,在请求的返回header中获取编码, 如果没有找到返回的编码,而程序也没有指定默认的编码,自然就得到null了。 最好这个地方设置一个默认的编码。可以参考文章:http://dh189.iteye.com/blog/732111
解决方案二:
原理是这样的,在请求的返回header中获取编码,如果没有找到返回的编码,而程序也没有指定默认的编码,自然就得到null了。最好这个地方设置一个默认的编码。

时间: 2024-11-05 21:39:00

httpclient4.x编码问题的相关文章

改编码-httpclient4+怎么禁用编码(Content-Transfer-Encoding)

问题描述 httpclient4+怎么禁用编码(Content-Transfer-Encoding) httpclient当POST表单时使用了Content-Type:multipart/form-data时表单自动编码了:如下 POST ------------------ HTTP/1.1Accept-Encoding: gzipdeflateContent-Type: multipart/form-data; boundary=MIME-Version: 1.0Content-Lengt

HttpClient4.3 第二次封装

httpclient.java package com.httpclint.util; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.apache.http.HttpException; import org.apache.http.entity.mime.content.B

详解Eclipse Galileo中的快速Java编码

问题 无论您的项目或团队的规模有多大,在编辑代码库时,都会遇到如下的两 个问题: 代码模板 尽管代码模板是提高工作效率的一个理想途径,但需要确 保不能用模板来替代真正的重用,即编写方法或函数以便将它们用于许多位置.如果您有 一大段代码,那么最好在使用代码模板前先考虑采用带有变量的各种方法. 缺乏 一致性 - 当团队中的很多人编辑文件时,难免会有编码上的些许差异,但这些差 异会使代码变得难于读懂和维护.这种情况下,很难搜索到代码差异在何处发生.即便代 码是您一个人写的,如果您忘记了前面代码是如何编

outofmemoryexception-VS2013 coded ui test 编码的UI测试 导致程序内存溢出

问题描述 VS2013 coded ui test 编码的UI测试 导致程序内存溢出 我在使用VS coded ui test对一个Winform的程序做自动化测试的时候,每次都在最后抛出OutOfMemoryException的异常,不知道怎么解决. 大家能不能帮忙解决下? 有没有什么方法控制或者监测内存使用情况啊?

文件名的字符编码和c的fopen函数问题

问题描述 文件名的字符编码和c的fopen函数问题 问一个问题,文件名的存储和文件名的显示应该是两回事吧 中文版windows的环境字符集是GBK GBK中"茅"的编码是 195 169(十进制) 如果我在中文版windows里看到个文件叫"a茅" 那么他的文件名在硬盘中的存储方式应该是97 195 169 我编了个c程序如下: FILE *fp; char b[100]={'a',195,169,0}; strcat(b,".html"); i

PHP编码规范-php coding standard

standard|编码|规范 目录 介绍 标准化的重要性 解释 认同观点 项目的四个阶段 命名规则 合适的命名 缩写词不要全部使用大写字母 类命名 类库命名 方法命名 类属性命名 方法中参数命名 变量命名 引用变量和函数返回引用 全局变量 定义命名 / 全局常量 静态变量 函数命名 php文件扩展名 文档规则 评价注释 Comments Should Tell a Story Document Decisions 使用标头说明 Make Gotchas Explicit Interface an

编码练习:猴子捡桃

插入前面:这段内容本来在下面猴子分桃题目之前是没有的,想看题,可以先看后面的题目,然后看着插入在前面的关于递归实现下面问题的代码,为什么要突然放在前面,因为这是一部分比较重要的内容,是个思想锻炼的结果和总结,另外最后吗还给出了错误的代码以及错误的原因可以对比理清思路: 1 #include <iostream> 2 using namespace std; 3 4 5 int recursion(int time,int n) 6 { 7 int sum; 8 if (time == 0) {

探秘视频编码黑科技,窄带高清2.0视觉模型及场景实战

"黑科技"这个词已经成为了今年云栖大会的关键词.那么,在我们熟知的视频领域,什么才算是黑科技呢? 我们知道,在通常情况下,视频画质越好带宽费用肯定越高,带宽又是视频服务中占比很高的一项成本,很多开发者都在寻求效果与成本的平衡点.那么,有没有一种技术,能够在保证甚至提高视频画质的同时,降低带宽呢?如果有的话,小编觉得这一点可以算是黑科技了吧. 今天,小编就带大家来了解下刚刚在云栖大会上重磅发布的阿里云窄带高清2.0,看看它是如何超越压缩极限,在视觉效果和带宽成本中找到平衡的. 首先,我们

关于ISO-8859-1编码

在Java的一些程序中经常可以看到有这样的代码: String.getBytes("ISO-8859-1") . 虽然我是大概知道这个是以单字节来解码的,我也不写这样的代码.但是见得多了,总要多了解下. 以下from http://baike.baidu.com/view/2613676.htm ISO-8859-1 ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0