之前的段落有下面一段代码:
stringen=
oResponse.CharacterSet;
if(en==null||en.Length==0)en="gb2312" ;
if(en.ToLower()=="iso-8859-1")en="gb2312" ;
StreamReaderreader=newStreamReader(dataStream,Encoding.GetEncoding(en));
if(en==null||en.Length==0)en="gb2312" ;
if(en.ToLower()=="iso-8859-1")en="gb2312" ;
StreamReaderreader=newStreamReader(dataStream,Encoding.GetEncoding(en));
其实是判断Response返回的数据是什么编码格式:GBK,UTF-8,Unicode,iso-8858-1?
如果不能获取到编码格式,那么我们在解码时也是错误的。
这点还是同http协议有关,也可以说是同web容器本身的输出有关,在这个基础上还有一个点值得提一下:
Content-Encoding: gzip
Transfer-Encoding: chunked
这也是同压缩解码有关,虽然同上面的说的不是一回事。
写本文的另外一点的主要方面是之前的代码有这样一句话:
oRequest.UserAgent="NutsSoft.com.cn";
告诉服务器浏览器的软件版本。
大部分的服务器不会检查这个东西,但是总是有BT存在的。比如微软
MSN的网站是检查了浏览器的版本的。好像是根据版本来判断浏览器是否支持javascript
所以上面的一句话只能改成了
oRequest.UserAgent="Mozilla/4.0(compatible;MSIE7.0;NutsSoft.com.cn)";
而这个小小的问题又困扰了我大半天。其实之前也遇到同样的问题,只是这次没有预料到会发生而已。