国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

.NET自動字符編碼識別程序庫 NChardet

2019-11-18 16:41:47
字體:
來源:轉載
供稿:網友

什么是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.survivalescaperooms.com/hhh/archive/2007/01/27/632251.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河北区| 北辰区| 英吉沙县| 潼关县| 盐边县| 闽侯县| 班戈县| 客服| 秦安县| 南城县| 从化市| 绥德县| 土默特左旗| 葫芦岛市| 福泉市| 石嘴山市| 蛟河市| 巴中市| 浮梁县| 武川县| 上思县| 金湖县| 托里县| 汝南县| 克拉玛依市| 鹤峰县| 文成县| 泸溪县| 曲松县| 乌恰县| 日土县| 洪江市| 婺源县| 苍南县| 顺义区| 甘孜县| 九龙城区| 武陟县| 德阳市| 九龙坡区| 西峡县|