日期:2014-05-17  浏览次数:20855 次

获取到编码方式为GBK的网页内容后如何正常显示?
代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace WebRequestTest
{
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest request = WebRequest.Create("http://gr.xidian.edu.cn/index.do");
            request.Credentials = CredentialCache.DefaultCredentials;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Console.WriteLine(response.StatusDescription);
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();
            Console.WriteLine(responseFromServer);
            reader.Close();
            dataStream.Close();
            response.Close();
        }
    }
}

运行结果如图所示:

可以看到显示出来汉字的部分都是乱码。已知这个网页的编码方式是GBK,怎样才能正常显示出来呢?

------解决方案--------------------
本帖最后由 bdmh 于 2013-01-16 17:24:34 编辑
StreamReader reader = new StreamReader(dataStream,Encoding.GetEncoding("GBK"));

------解决方案--------------------
StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("gbk"));
------解决方案--------------------
StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("GBK")); 
------解决方案--------------------

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace WebRequestTest
{
    class Program
    {
        static void Main(string[] args)
        {
            WebRequest request = WebRequest.Create("http://gr.xidian.edu.cn/index.do");
            request.Credentials = CredentialCache.DefaultCredentials;
            HttpWebResponse response&n