问题描述
我在使用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