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

Reading number is top 10 articles
visual c++中类的多态性与虚函数
优化mysql性能的十个参数的详细介绍_php资料_编程技术
Asp.net直接保存文件到客户端_[Asp.Net教程]
解决SqlTransaction用尽的问题(SQL处理超时)_[SQL,Server教程]
用javascript轻松制作一套简单的抽奖系统_JavaScript技术_编程技术
不用组件实现Ajax效果_[AJAX教程]
ExtJS与.NET结合开发实例(Grid之批量删除篇)_[Asp.Net教程]
SQL不完全思路与防注入程序_[SQL,Server教程]
ADO.NET打开数据库链接
技巧:PHP关于中文汉字替换与模式匹配的问题_php资料_编程技术
Reading number is top 10 pictures
Ashlynn Brooke photograph of a group3
Seductive beauty of crime1
The other a successor of sora aoi
Female star bikini
真正的国产-非模拍 贵在是真实1
女人化妆前后的对比
Hunan road lawenforcement vehicle pursue overload car caused the car turn and man is died
西班牙山村小景5
Very beautiful interior decoration
Plump, too plump!2
Download software ranking
WebService在.NET中的实战应用教学视频 → 第3集
Boxer vs Yellow5
Boxer's Top ten classic battle3
Rio big adventure
Photoshop 8.0图象编辑软件
C#COM编程指南
WebService在.NET中的实战应用教学视频 → 第4集
Popkart Cracked versions Mobile phone games
I for your crazy
I'm come from Beijing2
delv published in(发表于) 2014/1/27 6:48:53 Edit(编辑)
ASP.NET自动识别GB2312与UTF-8编码的文件_[Asp.Net教程]

ASP.NET自动识别GB2312与UTF-8编码的文件_[Asp.Net教程]

ASP.NET自动识别GB2312与UTF-8编码的文件_[Asp.Net教程]

Question


在简体中文系统中,我们有时候需要打开一个保存在磁盘上的纯文本文件,例如txt,但却不知道其保存编码,该怎么办呢?


如果文本只需要在Windows上显示,那就很幸运了,因为无论是GB2312还是UTF-8编码的string都能够正确显示。但如果需要输出到ASP.NET页面上就不是那么简单了,因为如果页面编码为UTF-8但纯文本文件导入的string是GB2312,那就会导致乱码,反之亦然。因此,我们需要一种方法自动识别磁盘上的纯文本文件到底是么编码的。


Answer


StreamReader其实是有编码自动检测功能,不过因为它仅仅检测前3个字节,所以只能UTF-8、Little-Endian Unicode、Big-Endian Unicode之前作出选择,如果上述3个都不匹配,就选择用户提供的编码。因此,我们可以提供GB2312编码给StreamReader,让它在GB2312和UTF-8之前自动作出选择。


using (StreamReader reader = new StreamReader(path, Encoding.Default)
{
string line;
while ((line = reader.ReadLine()) != null)
{
FileTextBox.InnerHtml += Server.HtmlEncode(line) + "\r\n";
}
FileEncodingNameLabel.Text = reader.CurrentEncoding.EncodingName;
}


上述代码使用Encoding.Default初始化StreamReader,Encoding.Default指的是系统的默认ANSI编码,在简体中文系统中就是GB2312。这样写能够让代码保持有一定的兼容性,例如在繁体中文系统就变成了自动在Big5和UTF-8之间做出选择。之后的代码就是用StreamReader逐行读取文件内容并放到FileTextBox中,最后通过StreamReader的CurrentEncoding属性获取编码名称并显示在FileEncodingNameLabel中。







添加到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.