当前位置:  编程技术>.net/c#/asp.net

C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)

    来源: 互联网  发布时间:2014-11-03

    本文导语:  以下是获取文件编码的一个类: using System; using System.IO; using System.Text; /// /// FileEncoding 的摘要说明 /// namespace FileEncoding { /// /// 获取文件的编码格式 /// public class EncodingType { /// /// 给定文件的路径,读取文件...

以下是获取文件编码的一个类:

using System;
using System.IO;
using System.Text;
 
/// 
/// FileEncoding 的摘要说明
/// 
namespace FileEncoding
{
/// 
/// 获取文件的编码格式
/// 
public class EncodingType
{
/// 
/// 给定文件的路径,读取文件的二进制数据,判断文件的编码类型
/// 
/// 文件路径
/// 文件的编码类型
public static System.Text.Encoding GetType(string FILE_NAME)
{
FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);
Encoding r = GetType(fs);
fs.Close();
return r;
}
 
/// 
/// 通过给定的文件流,判断文件的编码类型
/// 
/// 文件流
/// 文件的编码类型
public static System.Text.Encoding GetType(FileStream fs)
{
byte[] Unicode = new byte[] { 0xFF, 0xFE, 0x41 };
byte[] UnicodeBIG = new byte[] { 0xFE, 0xFF, 0x00 };
byte[] UTF8 = new byte[] { 0xEF, 0xBB, 0xBF }; //带BOM
Encoding reVal = Encoding.Default;
 
BinaryReader r = new BinaryReader(fs, System.Text.Encoding.Default);
int i;
int.TryParse(fs.Length.ToString(), out i);
byte[] ss = r.ReadBytes(i);
if (IsUTF8Bytes(ss) || (ss[0] == 0xEF && ss[1] == 0xBB && ss[2] == 0xBF))
{
reVal = Encoding.UTF8;
}
else if (ss[0] == 0xFE && ss[1] == 0xFF && ss[2] == 0x00)
{
reVal = Encoding.BigEndianUnicode;
}
else if (ss[0] == 0xFF && ss[1] == 0xFE && ss[2] == 0x41)
{
reVal = Encoding.Unicode;
}
r.Close();
return reVal;
 
}
 
/// 
/// 判断是否是不带 BOM 的 UTF8 格式
/// 
/// 
/// 
private static bool IsUTF8Bytes(byte[] data)
{
int charByteCounter = 1; //计算当前正分析的字符应还有的字节数
byte curByte; //当前分析的字节.
for (int i = 0; i < data.Length; i++)
{
curByte = data[i];
if (charByteCounter == 1)
{
if (curByte >= 0x80)
{
//判断当前
while (((curByte  1)
{
throw new Exception("非预期的byte格式");
}
return true;
}
 
}
 
 
}

以下是使用示例:

#region 打开按钮
/// 
/// 打开按钮
/// 
/// 
/// 
private void txtMenuOpen_Click(object sender, EventArgs e)
{
string fName;
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = "";//注意这里写路径时要用c:而不是c: 
openFileDialog.Filter = "文本文档|*.txt";
openFileDialog.RestoreDirectory = true;
openFileDialog.FilterIndex = 1;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
fName = openFileDialog.FileName;
 
txtBox.Text = System.IO.File.ReadAllText(fName,
FileEncoding.EncodingType.GetType(fName));
} 
 
}
#endregion

    
 
 

您可能感兴趣的文章:

  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  • c#实现TextBox只允许输入数字
  • C# Winform 整个窗口拖动的实现代码
  • c# ListView实现双击Item事件的变通方法
  • C#实现随鼠标移动窗体实例
  • C#中的FileUpload 选择后的预览效果具体实现
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • C#的锯齿数组以及C++实现代码
  • C#格式化文件大小的实现代码
  • C#怎样才能实现窗体最小化到托盘呢?
  • C# char类型字符转换大小写的实现代码
  • 如何实现插上多个USB存储设备,程序区分他们的一一对应关系?
  • 如何实现这样的API,可同时被不同的进程/线程使用,但是又不区分进程/线程?
  • 使MySQL查询区分大小写的实现方法
  • 求linux 下 C/c++ 实现SFTP上传文件的代码,或shell 写的如何区分上传是否成功?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 怎样在JAVA里实现获取指定服务器上所有可用数据库的列表??
  • PHP实现获取图片颜色值的方法
  • 在linux系统上,如何用C++实现获取和设置系统时间?
  • 哪位编程高手知道如何编程实现获取进程的内存使用量信息(linux)
  • DevExpress实现根据行,列索引来获取RepositoryItem的方法
  • java 获取项目文件路径实现方法
  • 如何编程实现获取当前系统中占用的内存总数,空闲百分比
  • 想编写程序实现aix下prtonf的功能,即获取系统硬件配置,需要用到哪些函数?
  • Android手机获取root权限并实现关机重启功能的方法
  • 解决C#获取鼠标相对当前窗口坐标的实现方法
  • 从textarea中获取数据之后按原样显示实现代码
  • DevExpress实现TreeList向上递归获取符合条件的父节点
  • 在SQL中获取一个长字符串中某个字符串出现次数的实现方法
  • 实现在同一方法中获取当前方法中新赋值的session值解决方法
  • 如何通过C++编程实现获取Linux系统下的一些系统信息?
  • DevExpress GridControl实现根据RowIndex和VisibleColumnsIndex来获取单元格值
  • Jquery获取单选按钮中文本值的实现代码
  • DevExpress获取TreeList可视区域节点集合的实现方法
  • android获取照片的快照 思路及实现方法
  • java获取当前时间和前一天日期(实现代码)
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • C#实现获取一年中是第几个星期的方法 iis7站长之家
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • php实现socket实现客户端和服务端数据通信源代码
  • 网站重定向用C语言实现iptables,ACL实现
  • flash AS3反射实现(describeType和getDefinitionByName)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3