http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3424|回复: 4

[求助] 怎么获得当前网站的编码呢 Enconding

[复制链接]
发表于 2014-12-6 18:49:19 | 显示全部楼层 |阅读模式
怎么获得当前网站的编码呢 Enconding


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-12-7 11:45:32 | 显示全部楼层
这个方案太多了,只是使用一种是不够的,我Httphelper是这样获取的,

[C#] 纯文本查看 复制代码
 /// <summary>  
        /// 设置编码  
        /// </summary>  
        /// <param name="item">HttpItem</param>  
        /// <param name="result">HttpResult</param>  
        /// <param name="ResponseByte">byte[]</param>  
        private void SetEncoding(HttpItem item, HttpResult result, byte[] ResponseByte)  
        {  
            //是否返回Byte类型数据  
            if (item.ResultType == ResultType.Byte) result.ResultByte = ResponseByte;  
            //从这里开始我们要无视编码了  
            if (encoding == null)  
            {  
                Match meta = Regex.Match(Encoding.Default.GetString(ResponseByte), "<meta[^<]*charset=([^<]*)[\"']", RegexOptions.IgnoreCase);  
                string c = string.Empty;  
                if (meta != null && meta.Groups.Count > 0)  
                {  
                    c = meta.Groups[1].Value.ToLower().Trim();  
                }  
                if (c.Length > 2)  
                {  
                    try  
                    {  
                        encoding = Encoding.GetEncoding(c.Replace("\"", string.Empty).Replace("'", "").Replace(";", "").Replace("iso-8859-1", "gbk").Trim());  
                    }  
                    catch  
                    {  
                        if (string.IsNullOrEmpty(response.CharacterSet))  
                        {  
                            encoding = Encoding.UTF8;  
                        }  
                        else  
                        {  
                            encoding = Encoding.GetEncoding(response.CharacterSet);  
                        }  
                    }  
                }  
                else  
                {  
                    if (string.IsNullOrEmpty(response.CharacterSet))  
                    {  
                        encoding = Encoding.UTF8;  
                    }  
                    else  
                    {  
                        encoding = Encoding.GetEncoding(response.CharacterSet);  
                    }  
                }  
            }  
        }  
 楼主| 发表于 2014-12-7 12:15:22 | 显示全部楼层
我认为不准确, 只根据这样判断有点武断,   
还要判断是否真的准确, 如果不准确需要改的
发表于 2014-12-7 14:47:02 | 显示全部楼层
330567713 发表于 2014-12-7 12:15
我认为不准确, 只根据这样判断有点武断,   
还要判断是否真的准确, 如果不准确需要改的

请你提供下更好的方案呢?
发表于 2014-12-7 14:59:34 | 显示全部楼层
在一个类里面这个应该是最适合的,
如果你不使用我的类,可以自己写一套编码解析的方案,
我的类里面不可能 那样做,因为到时候这部分代码会远远超过我的类代码,这个不现实,
随便找个浏览器的源码分析一下吧。

如果是仅仅用于和我的Httphelper类似的情况这个已经够了,95%以上的网站都正确。这个几率已经足够了。

毕竟只是一个类,如果再带一套分析系统,这样肯定不可取。

武断有点言过了,
我做站长工具这么长时间了,一直用这个类的解决方案,也没见有几个分析不出来的,

如果你非要说一个也不能错,那这个确实不适合你。
毕竟99%的网站上设置的编码都是对的。那种另类的网站已经很少见了。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-15 01:16

© 2014-2021

快速回复 返回顶部 返回列表