网页编码识别
来源:互联网 发布:图片转word软件 编辑:程序博客网 时间:2024/05/12 23:18
因采集需求,想解决网页编码识别问题。网上提出了很多方法。比如根据文件头字节判断,或根据网页的charset标识符判断。
我在实际应用中,这些方法都有各自的不足,比如有的网页charset写的是gbk,但实际是utf8。
于是想了一个个人认为比较新鲜的方法。将html下载回来后,做一份utf8副本和一份gbk副本,然后将utf8转换为bytes,判断bytes内是否有乱码标识(连续三个byte表示为239 191 189),如果有,则表示为乱码,直接使用gbk,如果没有,则表示没有乱码,直接使用utf8。
下面看看我的代码:
获取html:
var data = new System.Net.WebClient { }.DownloadData(this.textBox1.Text); //根据textBox1的网址下载htmlvar r_utf8 = new System.IO.StreamReader(new System.IO.MemoryStream(data),Encoding.UTF8); //将html放到utf8编码的StreamReader内var r_gbk = new System.IO.StreamReader(new System.IO.MemoryStream(data), Encoding.Default); //将html放到gbk编码的StreamReader内var t_utf8 = r_utf8.ReadToEnd(); //读出html内容var t_gbk = r_gbk.ReadToEnd(); //读出html内容if (!isLuan(t_utf8)) //判断utf8是否有乱码{htm = t_utf8;this.Text = "utf8";}else{htm = t_gbk;this.Text = "gbk";}this.textBox2.Text = htm;
判断是否有乱码:bool isLuan(string txt)
{
var bytes = Encoding.UTF8.GetBytes(txt);
//239 191 189
for (var i = 0; i < bytes.Length; i++)
{
if(i < bytes.Length - 3)
if (bytes[i] == 239 && bytes[i + 1] == 191 && bytes[i + 2] == 189)
{
return true;
}
}
return false;
}
以上介绍的就是c# 获取网页源码,自动判断编码格式方法,希望对你有所帮助。 {
var bytes = Encoding.UTF8.GetBytes(txt);
//239 191 189
for (var i = 0; i < bytes.Length; i++)
{
if(i < bytes.Length - 3)
if (bytes[i] == 239 && bytes[i + 1] == 191 && bytes[i + 2] == 189)
{
return true;
}
}
return false;
}
0 0
- 网页编码识别
- 网页编码识别的方法 - charset
- HttpClient对网页编码的精确识别
- java里面httpclient如何识别网页编码
- 如何让浏览器正确识别网页编码
- 如何让浏览器正确识别网页编码
- 解决让浏览器正确识别网页编码的办法
- 解决浏览器无法正确识别网页编码的方法
- Cpdetector识别网页编码 解决Java爬虫乱码问题
- 网页编码
- 网页编码
- 网页编码
- 识别网页木马
- 网页电话/手机号码识别
- 字符集编码的识别
- linux 文件编码识别
- uft-8编码识别
- Flex识别文本文件编码
- 在应用层的横竖屏切换
- 基于Cocos2D的IOS游戏开发进阶与实践 —— Stage 1 —— 学习笔记
- webservice之cxf
- java线程当中 sleep() join() yield()方法的简单比较以及如何保护共享数据介绍
- 嵌入式软件之定时器的设计
- 网页编码识别
- CLH队列锁
- 数据仓库架构的理解
- PullToRefresh使用详解(三)--实现异步加载的下拉刷新列表
- Install Gnome Classic (Gnome Session Fallback) to Ubuntu 12.04
- 黑马程序员---java基础---1排序
- LCD驱动程序——框架分析(一)
- Object C语法中const、extern和static的含义
- python动态加载模块