All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
C#动态生成树型结构的Web程序设计_.net资料_编程技术
利用ASP.NET实现分页管理器(高级篇)_[Asp.Net教程]
PHP技巧:正确理解PHP程序编译时的错误信息_php资料_编程技术
asp.net2.0动态加载主题
ADO.NET,2.0:如何排除错误信息_[Asp.Net教程]
.Net,Framework3.0,实践纪实之布局_[Asp.Net教程]
利用C#创建,IIS,站点并设置.NET,Framework版本为ASP.NET,2.0,的方法,二_[Asp.Net教程]
教程:如何实现ASP.NET网站个性化_.net资料_编程技术
visual c++中的类模板
C#关于正则表达式匹配无异常资源耗尽的解决方案_.net资料_编程技术
Reading number is top 10 pictures
NeedWallpaper12
Nikon microscopic photography of the first three
2013中国四川省高考作文
Terrorist smile the largest human history an explosion2
陪睡门马睿菈自曝写真 称首拍大尺度照片3
So beauty, will let you spray blood1
真正的国产-非模拍 贵在是真实1
青春清纯美女大集合1
修电脑也有这么漂亮的美女
遇到插队的怎么办?
Download software ranking
金山office2007
DreamWeaver8
Call Of Duty2
Unix video tutorial2
天龙八部十二宫服务端
变速齿轮3.26
Boxer's Top ten classic battle9
Unix video tutorial14
The Bermuda triangle2
Red cliff
delv published in(发表于) 2014/1/16 9:27:27 Edit(编辑)
.NET自动字符编码识别程序库,NChardet_[Asp.Net教程]

.NET自动字符编码识别程序库,NChardet_[Asp.Net教程]

.NET自动字符编码识别程序库 NChardet_[Asp.Net教程]

什么是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 Console.WriteLine("Probable Charset = " + prob[i]);
}
}
Console.ReadLine();

http://www.cnblogs.com/hhh/archive/2007/01/27/632251.html







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.