首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> PHP教程
.net自动字符编码识别程序库 nchardet_asp.net技巧
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

什么是NChardet
     NChardet是mozilla自动字符编码识别程序库chardet的.NET实现,它移植自jchardet,chardet的java版实现,可实现对给定字符流的编码探测。

 NChardet是如何工作的

     NChardet通过逐个比较输入字符来猜测编码;由于是猜测,所以可能会有不能完全识别的情况;如果输入字符不能确定正确的编码,那么NChardet会给出一组可能的编码值。

 如何使用NChardet

    要使用NChardet来探测编码,需要进行如下步骤。

    1、使用制定的语言线索来构造Detector类的实例对象。
    2、用实现了ICharsetDetectionObserver接口的对象作为参数来调用Detector类的Init方法。
    3、传入要探测的字符流进行编码探测。
    4、调用Detector类的DataEnd方法。
    5、得到结果或可能的结果集。

    语言线索是一个整数,可用的语言线索有如下几个:

         1.    Japanese
         2.    Chinese
         3.    Simplified Chinese
         4.    Traditional Chinese
         5.    Korean
         6.    Dont know (默认)


    ICharsetDetectionObserver接口只有一个Notify方法,当NChardet引擎认为自己已经探测出正确的编码时,它就会调用这个Notify方法,用户程序可以从这个Nodify方法中得到通知(重写ICharsetDetectionObserver接口的Notify实现)。

代码实例:


 //实现ICharsetDetectionObserver接口
    public class MyCharsetDetectionObserver :
        NChardet.ICharsetDetectionObserver
    {
        public string Charset = null;
       
        public void Notify(string charset)
        {
            Charset = charset;
        }
    }

 

        int lang = 2 ;//
    //用指定的语参数实例化Detector
        Detector det = new Detector(lang) ;
    //初始化
        MyCharsetDetectionObserver cdo = new MyCharsetDetectionObserver();
        det.Init(cdo);

    //输入字符流
    Uri url = new Uri(“http://cn.yahoo.com”);
    HttpWebRequest request =
        HttpWebRequest)WebRequest.Create(url);
    HttpWebResponse response =
        (HttpWebResponse)request.GetResponse();
    Stream stream = response.GetResponseStream();
   
    byte[] buf = new byte[1024] ;
    int len;
    bool done = false ;
    bool isAscii = true ;

    while( (len=stream.Read(buf,0,buf.Length)) != 0) {
        // 探测是否为Ascii编码
        if (isAscii)
            isAscii = det.isAscii(buf,len);

        // 如果不是Ascii编码,并且编码未确定,则继续探测
        if (!isAscii && !done)
                done = det.DoIt(buf,len, false);

    }
    stream.Close();
    stream.Dispose();
    //调用DatEnd方法,
    //如果引擎认为已经探测出了正确的编码,
//则会在此时调用ICharsetDetectionObserver的Notify方法
    det.DataEnd();

    if (isAscii) {
        Console.WriteLine("CHARSET = ASCII");
          found = true ;
    }
    else if (cdo.Charset != null)
    {
        Console.WriteLine("CHARSET = {0}",cdo.Charset);
        found = true;
    }
   
    if (!found) {
        string[] prob = det.getProbableCharsets() ;
        for(int i=0; i<prob.Length; i++) {
            Console.WriteLine("Probable Charset = " + prob[i]);
        }
    }
    Console.ReadLine();
http://www.cnblogs.com/hhh/archive/2007/01/27/632251.html


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·php聊天室技术
·Java面试中的陷阱-JSP教程,Java技巧及代码
·如何找出在线电影的真实下载地址
·用Visual C#实现局域网点对点通讯-.NET教程,C#语言
·不使用installutil.exe安装WINDOWS服务-.NET教程,Windows开发
·域名查询代码公布
·J2EE项目10大风险-JSP教程,J2EE/EJB/服务器
·“IIS配置401错误”完美解决方案-.NET教程,评论及其它
·如何使用ASP实现网站的“目录树”管理-ASP教程,数据库相关
·Java 面试中的陷阱-JSP教程,Java技巧及代码
最新文章
·windows powershell的12项酷功能_windows vista
·google adwords投放报告(一)_网赚技巧
·互联网赚钱三种最基本的模式_网赚技巧
·百度联盟:何种做法会被认为是网站作弊_网赚技巧
·google adsense电话验证的注意事项_网赚技巧
·王峰:没什么可以改变我与雷军的十年友情_站长访谈
·胡安军:创业需要一种信仰_站长访谈
·金融界ceo赵志伟:行业整合才刚刚开始_站长访谈
·李军 bios之家的荣耀与梦想_站长访谈
·酷溜网李善友:创业不赚钱 毋宁死_站长访谈
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭