当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

从http协议看无法得到网页charset的缘由[Java编程]

赞助商链接



  本文“从http协议看无法得到网页charset的缘由[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

原始问题以下:

http://topic.csdn.net/u/20080902/02/a6445aa1-2e6b-45c6-a47c-79009718c0fa.html

html网页的内容大致以下:

<!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


  以上是“从http协议看无法得到网页charset的缘由[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 从http协议看无法得到网页charset的缘由
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .