之前的段落有下面一段代码:
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));
其实是判断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)";而这个小小的问题又困扰了我大半天。其实之前也遇到同样的问题,只是这次没有预料到会发生而已。
本文探讨了如何正确处理HTTP响应中的字符编码问题,特别是当编码未知时的默认处理方式,并介绍了User-Agent头字段的作用及其对服务器行为的影响。
3万+

被折叠的 条评论
为什么被折叠?



