if (encoding == null)
{
Match meta = Regex.Match(Encoding.Default.GetString(RawResponse), "<meta([^<]*)charset=([^<]*)[\"']", RegexOptions.IgnoreCase);
string charter = (meta.Groups.Count > 2) ? meta.Groups[2].Value.ToLower() : string.Empty; // 为什么正常情况下mata.Group有3个值
charter = charter.Replace("\"", "").Replace("'", "").Replace(";", "").Replace("iso-8859-1", "gbk"); // 最后一个替换不是很理解
if (charter.Length > 2)
encoding = Encoding.GetEncoding(charter);
else
{
if (string.IsNullOrEmpty(response.CharacterSet))
encoding = Encoding.UTF8;
else
encoding = Encoding.GetEncoding(response.CharacterSet); //为什么这里能够保证编码出来的一定不是乱码?
}
}
//得到返回的HTML
result.Html = encoding.GetString(RawResponse);
能否请版主解答下... 顺便问下 这个正则表达式@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(? ?!</?a\b).)*)</a>"; 我用来提取HTML页面链接的,对正则不太清楚,能否有高人能解释下这个正则. 时间紧迫~!!
|