c# 如何获得文件编码格式 ,我是用streamread 读的

如题所述

第1个回答  2011-05-10
文件的字符集在Windows下有两种,一种是ANSI,一种Unicode。

对于Unicode,Windows支持了它的三种编码方式,一种是小尾编码(Unicode),一种是大尾编码(BigEndianUnicode),一种是UTF-8编码。

我们可以从文件的头部来区分一个文件是属于哪种编码。当头部开始的两个字节为 FF FE时,是Unicode的小尾编码;当头部的两个字节为FE FF时,是Unicode的大尾编码;当头部两个字节为EF BB时,是Unicode的UTF-8编码;当它不为这些时,则是ANSI编码。

按照如上所说,我们可以通过读取文件头的两个字节来判断文件的编码格式,代码如下(C#代码):

程序中System.Text.Encoding.Default是指操作系统的当前 ANSI 代码页的编码。

public System.Text.Encoding GetFileEncodeType(string filename)
{
System.IO.FileStream fs = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
Byte[] buffer = br.ReadBytes(2);
if(buffer[0]>=0xEF)
{
if(buffer[0]==0xEF && buffer[1]==0xBB)
{
return System.Text.Encoding.UTF8;
}
else if(buffer[0]==0xFE && buffer[1]==0xFF)
{
return System.Text.Encoding.BigEndianUnicode;
}
else if(buffer[0]==0xFF && buffer[1]==0xFE)
{
return System.Text.Encoding.Unicode;
}
else
{
return System.Text.Encoding.Default;
}
}
else
{
return System.Text.Encoding.Default;
}本回答被提问者采纳

c# 如何获得文件编码格式 ,我是用streamread 读的
按照如上所说,我们可以通过读取文件头的两个字节来判断文件的编码格式,代码如下(C#代码):程序中System.Text.Encoding.Default是指操作系统的当前 ANSI 代码页的编码。public System.Text.Encoding GetFileEncodeType(string filename){ System.IO.FileStream fs = new System.IO.FileStream(filename, ...

怎么用C#获取任何文件的编码格式
1、FileStream fs = new FileStream("你的路径", FileAccess.ReadWrite, FileMode.OpenOrCreate);StreamReader sr = new StreamReader(fs, Encoding.Default);sr.ReadToEnd();sr.Close();fs.Close();2、File.ReadAllLines("你的路径", Encoding.Default);很多种呀,具体可以分析一下 File类,Encod...

C#读取txt文件并 依照条件分类输出到不同的txt文件中
1. C# 操作txt,使用的是流操作。主要用到的两个对象是StreamReader和StreamWriter。使用的对象方法是:ReadLine()一行一行读取和WriteLine()一行一行写入。由于用到Stream对象,所以首先要引用System.IO命名空间:using System.IO;引用后,定义StreamReader和StreamWriter对象:private StreamReader _rstr...

...c#怎么打开这种后缀的文件 我尝试用streamreader来读取 但是失败...
大概是自定义的二进制文件吧,看文件是以日期和时间命名的,估计不是内存转储文件,就是日志文件,Debug用的,你没必要去研究他。你可以使用 任意一款16进制编辑器打开他

c#的IO流怎么读GB2312编码或其他编码的文本文件?
解决方法有两种:一是用StreamRead去读,new的时候传出两个参数,第一个是路径 第二个是编码格式,你可以指定为枚举类型中的默认编码格式 StreamReader sr= new StreamReader(filename,Encoding.Default);二是先指定编码格式,然后用指定的编码格式去读取.代码:private static StringBuilder readFile(string...

C# StreamReader类和StreamWriter类
StreamReader支持读取文件的代码片段,逐行使用ReadLine方法。同样,StreamReader允许从流中使用ReadToEnd完整读取文件内容。读取内容也可以存入字符数组,此操作类似于Stream类的Read方法,但读入的是char数组。需要记住的是,char类型使用两个字节,适合16位Unicode,但不适合UTF-8编码。StreamWriter类专用于文...

C#如何对文件进行读写
(一) 读取文件 如果你要读取的文件内容不是很多,可以使用 File.ReadAllText(FilePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法。它们都一次将文本内容全部读完,并返回一个包含全部文本内容的字符串 string str = File.ReadAllText(@"c:\\temp\\ascii.txt");\/\/ 也可以指定编码...

c#如何读取规定格式的TXT文件,并存入数据库
这个很简单啊 你以一行的形式读取 然后 拿到这行以后 判断这行的格式是否有日期 如果有的话 那麼就是 2009\/12\/7 否则就是 06:35 电视剧 家有儿女(第一部)如果你要源码的话我可以现在给你写 有问题HI我 !!\/\/得到节目TXT StreamReader sr = new StreamReader("D:\\\\jiangsu.txt", ...

C#中读取和写入文件的过程,常用哪几类?
写文件核心代码:复制代码代码如下:FileStream fs = new FileStream(文件路径,FileMode.Create);\/\/获得字节数组 byte [] data =new UTF8Encoding().GetBytes(String);\/\/开始写入 fs.Write(data,0,data.Length);\/\/清空缓冲区、关闭流 fs.Flush();fs.Close();2、使用StreamReader和StreamWriter 文件...

C#中的流操作有哪些呢?
StreamReader\/StreamWriter:用于文本流的读写,支持指定编码格式。BinaryReader\/BinaryWriter:用于二进制流的读写,支持各种数据类型。XmlReader\/XmlWriter:用于XML文档的读写,支持XPath查询和转换。以上是C#中常用的流操作,还有一些其他类型的流操作也很常见,例如PipeStream、MemoryMappedFile等。使用这些流操...

相似回答