首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么charset=gb2312时,CHtmlView:GetSource()也会Get出utf_8乱码?该如何解决

2012-02-27 
为什么charsetgb2312时,CHtmlView::GetSource()也会Get出utf_8乱码?我用CHtmlView::GetSource()取网页的h

为什么charset=gb2312时,CHtmlView::GetSource()也会Get出utf_8乱码?

        我用CHtmlView::GetSource()取网页的html,基本上没什么问题。但有时候碰到一两个网页很奇怪,Get出的是像charset=utf_8那样的汉字乱码,但明明meta标签里写明是gb2312,为什么会这样?难道是网页的制作者作过什么加密处理吗?但IE的“源文件”菜单却能看到正确的html.
        比如这个页:
        http://www.qu114.com/NN/1/1/888293.html
       


        用IE的“源文件”菜单可看到其html是这样的(篇幅所限,只摘录开头部分):

---------------网页正确html----------------------
<!DOCTYPE   html   PUBLIC   "-//W3C//DTD   XHTML   1.0   Transitional//EN "   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html   xmlns= "http://www.w3.org/1999/xhtml ">
<head   id= "Head1 ">
        <title> 房屋出租|南宁个人出租|南宁分类信息|去114城市分类信息 </title>
        <meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 "   />
<meta   content= "房屋出租,南宁个人出租,南宁分类信息,去114城市分类信息 "   name= "Keywords "   />
<meta   content= "南宁权威的城市分类信息平台,覆盖南宁各个区县,为在南宁寻找和提供个人出租的朋友提供全面信息查询和免费发布服务. "   name= "Description "   />

        <link   href= "http://pic.qu114.com/style/list.css "   type= "text/css "   rel= "stylesheet "   />
</head>
<body   onmouseout= "window.status= '客户服务电话:020-85609187;   客服QQ:   228420114,   228430114 ';return   true ">
        <form   name= "form1 "   method= "post "   id= "form1 ">
<div>
......
......
---------------END   of   网页正确html----------------------


          但我用CHtmlView::GetSource()得到的字串是这样的:

---------------GetSource()得到的字串--------------------
<!DOCTYPE   html   PUBLIC   "-//W3C//DTD   XHTML   1.0   Transitional//EN "   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html   xmlns= "http://www.w3.org/1999/xhtml ">
<head   id= "Head1 ">
        <title> 鎴垮眿鍑虹|鍗楀畞涓汉鍑虹|鍗楀畞鍒嗙被淇℃伅|鍘?14鍩庡競鍒嗙被淇℃伅 </title>
        <meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 "   />
<meta   content= "鎴垮眿鍑虹,鍗楀畞涓汉鍑虹,鍗楀畞鍒嗙被淇℃伅,鍘?14鍩庡競鍒嗙被淇℃伅 "   name= "Keywords "   />
<meta   content= "鍗楀畞鏉冨▉鐨勫煄甯傚垎绫讳俊鎭钩鍙?瑕嗙洊鍗楀畞鍚勪釜鍖哄幙,涓哄湪鍗楀畞瀵绘壘鍜屾彁渚涗釜浜哄嚭绉熺殑鏈嬪弸鎻愪緵鍏ㄩ潰淇℃伅鏌ヨ鍜屽厤璐瑰彂甯冩湇鍔? "   name= "Description "   />

        <link   href= "http://pic.qu114.com/style/list.css "   type= "text/css "   rel= "stylesheet "   />
</head>
<body   onmouseout= "window.status= '瀹㈡埛鏈嶅姟鐢佃瘽:020-85609187;   瀹㈡湇QQ:   228420114,   228430114 ';return   true ">
        <form   name= "form1 "   method= "post "   id= "form1 ">
<div>
......
......
------------end   of   GetSource()得到的字串---------


        上面可以看到,字串是一些utf_8的编码,如果我对上面字串强行进行utf_8到gb2312的转换,就会转出正确的字串。但很奇怪,html里面的meta标签里明明是写着“charset=gb2312”,整个html都没有找到utf_8的字样。
        为什么会这样?



[解决办法]
那就是因为该网页的真实编码方式其实就是utf-8吧 :) 是不是由那个页面所采用的编辑工具引起的 :)

热点排行