从http协议看无法获取网页charset的原因 - 编程入门网
从http协议看无法获取网页charset的原因时间:2011-02-01 csdn博客 赵学庆原始问题如下: http://topic.csdn.net/u/20080902/02/a6445aa1-2e6b-45c6-a47c-79009718c0fa.html html网页的内容大致如下:
我使用以下语句抓取类似上面的网页:
无论是哪一句,得到的contentType的值都是text/html,而不包含后面的charset=gb2312,这是为什么? 我注意到一个问题,content="text/html; charset=gb2312"这里,在;和charset之间有一个空格,是否因为这个空格的缘故,而不能得到content-type的准确值 还有没有其他的办法可以得到页面的编码字符集? 回答: connection.getContentType(); 这个需要服务器设置了 ContentType才可以,这个数据在文件头里面,而不是在文件的主体(也就是你看到的html)里面。 所以检测页面类型需要分3步,如果这一步不行,则用下一个 1 看header里面的ContentType,也就是你用的那个方法 2 看 html 里面的 ContentType ,也就是解析html页面 3 对html数据进行自动评估,类似于it里面的自动检测编码类型。 一段典型的返回信息的Header数据 HTTP/1.1 200 OK Date: Mon, 01 Sep 2008 23:13:31 GMT Server: Apache/2.2.4 (Win32) mod_jk/1.2.26 Vary: Host,Accept-Encoding Set-Cookie: JAVA2000_STYLE_ID=1; Domain=www.java2000.net; Expires=Thu, 03-Nov-2011 09:00:10 GMT; Path=/ Content-Encoding: gzip Transfer-Encoding: chunked Content-Type: text/html;charset=UTF-8 <html> 。。。。从这里开始是数据的本体 此文收藏于:http://www.java2000.net/p9226 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |