当前位置:首页 --> 技术原创 --> 正文

得到网页的编码方式

2008-8-20 23:02:00 来源: 浏览次数: 评论数: 字号:[ ]
        在抓取网页的时候,得到它的编码方式是很重要的,直接决定抓取数据的正确性,这里介绍一种简单的获取方式。
        在大多数网页中,都会使用meta来指定网页的编码,浏览器也会根据这个参数描述的编码方式进行编码,如:
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        我们可以通过搜索这个参数的值获取编码方式,代码如下:
/// <SUMMARY>
/// 得到网页的编码方式
/// </SUMMARY>
/// <PARAM name="url"></PARAM>
/// <RETURNS></RETURNS>
private System.Text.Encoding GetPageEncoding(string url)
{
    System.Text.Encoding encod = System.Text.Encoding.Default;
    try
    {
        System.Net.WebRequest request = System.Net.WebRequest.Create(url);
        System.Net.WebResponse response = request.GetResponse();
        System.IO.Stream stream = response.GetResponseStream();
        byte[] header = new byte[1024];
        stream.Read(header, 0, header.Length);
        string head = Encoding.Default.GetString(header);
        stream.Close();
        stream.Dispose();
        string patternEncode = "<META[^>]+charset\\s*=\\s*(?<EN>[\\w-]+)";
        Regex regEncode = new Regex(patternEncode, RegexOptions.IgnoreCase);
        Match match = regEncode.Match(head);
        if (match.Success)
        {
            encod = System.Text.Encoding.GetEncoding(match.Groups["En"].Value);
        }
    }
    catch
    { }
    return encod;
}
 
  这个方法,可以得到指定URL的编码方式,如果匹配不到网页上的参数,则使用当前系统默认编码方式进行返回。
?
?