.net 环境下get 获取页面出现乱码问题解决
不多说了,先上代码:
/// <summary>
/// 获取页面内容
/// </summary>
/// <param name="Url">链接地址</param>
/// <returns></returns>
public static string GetWebContent(string Url)
{ string strResult = "", strCharacterSet="";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
StreamReader streamReader;
//声明一个HttpWebRequest请求
request.Timeout = 30000;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding;
string strPageCharacterSet = response.CharacterSet.ToLower();//获取页面响应中定义的编码字符串
encoding = Encoding.GetEncoding(strPageCharacterSet);
streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
strResult = StringHelps.RepalceStr(strResult, 0);
strCharacterSet = GetEncoding(strResult).ToLower();//获取页面html中声明的编码字符串
if (!strCharacterSet.Equals(strPageCharacterSet))//比较两者的编码格式是否一致,如果不一致,以页面中定义的编码格式再次去获取页面内容
{
strResult = GetWebContentByCharecterSet(Url, strCharacterSet);
}
if (string.IsNullOrEmpty(strResult))
{
streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
}
catch (Exception ex)
{
LogHelper.Save("获取页面出现乱码" + Url + ex.ToString());
}
return strResult;
}
/// <summary>
/// 指定编码格式获取页面代码
/// </summary>
/// <param name="Url"></param>
/// <param name="strCharacterSet"></param>
/// <returns></returns>
public static string GetWebContentByCharecterSet(string Url,string strCharacterSet)
{ string strResult = "";
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
StreamReader streamReader;
//声明一个HttpWebRequest请求
request.Timeout = 30000;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding;
encoding = Encoding.GetEncoding(strCharacterSet);
streamReader = new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
catch (Exception ex)
{
LogHelper.Save("获取页面出现异常" + Url + ex.ToString());
}
return strResult;
}
/// <summary>
/// 根据网页的HTML内容提取网页的Encoding
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
static string GetEncoding(string html)
{
string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)";
string charset = Regex.Match(html, pattern).Groups["charset"].Value;
if (string.IsNullOrEmpty(charset))
charset = "utf-8";
return charset;
}
.net 环境下get 获取页面出现乱码问题解决的更多相关文章
- Linux环境下shell和vim中乱码原因及消除办法
shell和vim中乱码原因及消除办法 作者:Jack47 在Linux下开发,经常遇到乱码问题:shell或者vim中显示不了中文,或者能够显示,但不能输入中文.每次都是上网去搜,或者同事告诉我一些 ...
- windows环境下使用MySQL导入数据乱码报错的解决办法
Linux及Mac系统下使用source xxx.sql 可直接导入测试数据(注意必须先切换到当前xxx.sql的目录下), 但在Windows环境下导入会出现乱码报错的情况, 主要是因为编码的问题, ...
- 解决中文环境下zabbix监控图形注释乱码
zabbix监控的图形界面能够更直观的查看监控状态,当我们把zabbix的语言切换为中文的时候,会发现监控图形中一些中文参数会乱码,例如下面的效果 但是图形界面在原生的英文环境下完全没有乱码问题.为了 ...
- Tomcat启动web项目静态页面中文乱码问题解决
1 首先查看静态页面在编辑器中是否正常, 如果是eclipse ,需要设置一下项目编码格式为utf-8, 如果是idea , 一般会自动识别, 也可以自己手动检查一下, 检查html上面是否有 ...
- x64 win64编译环境下ADO链接Access数据库的问题解决
原文链接地址:https://blog.csdn.net/HW140701/article/details/71077579 Win32编译环境下,用ADO数据库连接Access数据库一般都不会报错, ...
- idea环境下js、css中文乱码
idea2018.2+tomcat8+java8+win10 异常:本地js和css通过tomcat发布时,在页面打印出的中文是乱码.而从数据库读取的中文数据和html的中文显示正常. 解决方法: 步 ...
- SpringMVC获取页面数据乱码的解决get/post
一.post请求方式的乱码 在web.xml中加入: <filter> <filter-name>CharacterEncodingFilter</filter-name ...
- Linux下Birt、JTreeChart中文乱码问题解决办法
Linux下JTreeChart,Birt等报表工具显示中文乱码解决 1) 现象: 在Windows上生成的报表图片展示正常,但是在Linux上显示(怪异的小方块“口”): 2)问题定位: 这是lin ...
- Thinkphp在Lnmp环境下部署项目先后报错问题解决:_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/...Access denied.
首先报错:_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/769e70f2e46f34ceb60619bbda5e4691.php 解决此 ...
随机推荐
- 转---B/S结构JavaEE WebApp的全自动安装包制作心得
JavaEE的Web应用程序如今已大行其道,但其安装.配置.部署却一直繁琐无比,客观上阻碍了Web应用程序更大规模的推广和应用.因此,开发方制作一个集JDK.Web中间件.开源数据库的全自动安装程序很 ...
- PHP乱码问题,UTF-8(乱码) (share)
一.PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码 ...
- LintCode Anagrams
(记得import java.util.HashMap及Arrays, 首先字符串若为空或者数量为零, 则返回一个空的LinkedList) 1. 把string变为char数组, 再进行排序, 之后 ...
- vs增加第三方依赖库的方法总结
转自http://blog.csdn.net/raodotcong/article/details/8998379 先说说普通的两种方法: 方法1: 通过设置工程配置来添加lib库. 转自网上: A ...
- WebLogic口令猜解工具【Python脚本】
WebLogic 默认端口7001 可以通过如下链接访问控制台 http://10.9.1.1:7001/console/login/LoginForm.jsp 写了一个简单的猜解脚本,半成品,做个记 ...
- Android的Notification使用注意事项
看<Android开发-第一行代码>这本书,读到创建系统通知(Notification)的时候,发现若干主要方法均已经过期,于是找了一下官方的开发指南,进入此url:http://deve ...
- ul和dl的区别
列表中有标题的时候就用dl,没有的话就用ul
- PHP Date()函数详细参数
在页面的最前页加上 date_default_timezone_set(PRC); /*把时间调到北京时间,php5默认为格林威治标准时间*/ date () a: "am"或是& ...
- python之列表常见操作
list = [1,2,3,4,5,6,7,8,9,0,0,0,0,0] listSet = list.set(list)#将列表中的数据进行去重处理 此时listSet中的数据为[1,2,3,4,5 ...
- MIT JOS学习笔记03:kernel 02(2016.11.08)
未经许可谢绝以任何形式对本文内容进行转载! 本篇接着上一篇对kernel的分析. (5)pte_t * pgdir_walk(pde_t *pgdir, const void *va, int cre ...