如何获得不同编码网页的内容

kmyz_yyl 2016-12-20 09:58:21

假设要打开不同的网页,由于不同的网页可能汉字编码不同,有的网页就显示乱码,请教如何解决这个问题

DIMENSION URLx(5)

urlx(1)="http://www.163.com/"
urlx(2)="http://finance.eastmoney.com/"
urlx(3)="http://www.tiexue.net/"
urlx(4)="http://www.17zuoye.com/"
urlx(5)="http://bbs.csdn.net/"

FOR i=1 TO ALEN(urlx,1)
url_=urlx(i)
test=CREATEOBJECT("msxml2.xmlhttp")
LCURL=url_
test.OPEN("get", LCURL,.F.)
test.SEND
lcString=""

htmlx=STRCONV(test.responsebody,4) &&未经解码的原始数据 responseBody
*htmlx=test.responsetext &&Filetostr(lcFileName)

MESSAGEBOX(url_+CHR(13)+STREXTRACT(htmlx,"<title>","</title>"))
ENDf
...全文
311 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
都市夜猫 2016-12-20
  • 打赏
  • 举报
回复
判断网页编码方式没有百分百可靠的方法,否则就不会有浏览器也出现乱码的情况 一般来说,是先从响应头中取编码方式,用你一楼的命名,就是看: test.getResponseHeader('Content-Type') 的结果,有值的话,一般类似 text/html; charset=UTF-8 这样的形式 其中 charset= 后面的内容就是编码方式,常见的也就 utf-8,gb2312,gbk 三种 但也有很多网页的响应头中没有返回编码方式,这时还可以从返回的网页源码找 meta 标签中的 charset 也就是到 test.responsetext 中去找类似 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 形式的字符串,再解析出其中的 charset,最好使用正则表达式来查找匹配,因为 html tag 写法不严格,可能有多种不同写法,可能是 charset=utf-8 也可能是 charset="utf-8" 当然还包括 gb2312 和 gbk 以及大小写的不同 极端的情况,是上面两种方法都取不到 charset,那就只能自己默认取一种了,估计浏览器也没有快速的方法 得到 charset 后就好办了,如果是 utf-8 编码,用 strconv(test.responsebody, 11) 就能成功转换源代码中的汉字 是 gb2312 或 gbk 编码,就完全不需要转换了
都市夜猫 2016-12-20
  • 打赏
  • 举报
回复
STRCONV(test.responsebody,4) 是干嘛用的? 从没用过,看帮助,好像是用于日文的
kmyz_yyl 2016-12-20
  • 打赏
  • 举报
回复
按夜猫老师的指点,我改进了一下,好像是可以了 htmlx=STRCONV(test.responsebody,4) &&未经解码的原始数据 responseBody IF AT("=",htmltype)>0 htmltype=UPPER(Strt(SUBSTR(htmltype,AT("=",htmltype)+1),'"','')) IF htmltype="UTF-8" htmlx=strconv(test.responsebody,11) ENDIF ENDIF

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧