原始问题如下:
http://topic.csdn.net/u/20080902/02/a6445aa1-2e6b-45c6-a47c-79009718c0fa.htmlhtml网页的内容大致如下:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type;charset=gb2312" />
- <title>CSDN首页 </title>
- ...
- </head>
- <body>
- .....
- </html>
我使用以下语句抓取类似上面的网页:
- URL url = new URL("http://www.csdn.net");
- HttpURLConnection connection = (HttpURLConnection)url.openConnection();
- String contentType = connection.getHeaderField("Content-Type");
- contentType = connection.getContentType();
无论是哪一句,得到的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
<script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script>
分享到:
相关推荐
//直接通过XMLHttpRequest对象获取远程网页源代码 function getSource() { var url = document.getElementById("url").value; //获取目标地址信息 //地址为空时提示用户输入 if (url == "") { alert("请输入...
Charset(Chrome网页编码转换工具)是一款简单易用、功能强大的chrome网页编码转换工具,主要能通过内置的二十多种网页编码,将网站设置不规范而出现乱码的网页转换编码使之成为能够浏览的页面,在安装了这款插件后,...
正则表达式提取网页编码,此方法简便易懂。
找了半天,也确定了半天,终于发现,新版本的谷歌,(好像55之后的版本),都和我一样,找不到编码格式了。...但是,万能的百度,还是让我找到了方法,就是下载使用chrome插件(扩展应用)——Charset。
谷歌浏览器设置编码charset
解决浏览器无法切换网页编码的问题
GB-charset.pdf
.NET版本的Mozilla charset detector,由wingtrace根据Java版本的jchardet( http://sourceforge.net/projects/jchardet/ )移植而来。而jchardet项目是根据C版本的Mozilla charset detector移植而来。版权声明请...
压缩包中含有多个文档,从了解httpclient到应用。 httpClient 1httpClint 1.1简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持...
在谷歌浏览器中安装charset.crx离线Chrome插件,修改编码用
Chrome-Charset切换编码的扩展程序工具,解决chrome中network返回值乱码的问题
前端开源库-superagent-charset超级代理Charset,为节点的超级代理添加Charset支持
从 header 和 html content-type 获取内容字符集。 安装 go get -u github.com/mozillazg/go-charset 用法 s := `<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>` fmt . Println ( ...
nls_charset12.jar 之前在csdn上下载的这个文件有问题,导致程序调试了很久 我这边上传这个没有问题
PageEncoding&contentType中charset区别,遇到了与大家分享!
nls_charset12.jar oracle 驱动
ojdbc14.jar nls_charset12.jar
在web编程时,通常会遇到乱码的情况,这就是我们页面编码设置问题,这个资源可以帮你解决。
实验一:HTTP协议POST 实验目的 通过ajax实例深入理解http协议之post方法。 二、实验用到的工具软件 firefox的firebug插件 抓包工具wireshark 三、实验内容与步骤 1)正常情况下的html表单提交 html源码如下: <!...
微信的request的post请求后台获取不到data(当初这个问题纠结了好久好久),原因是post传递的data是json格式而不是key,value的格式,所以获取不到相应的data就是post请求应为表单模式的data,微信小程序提供的data...