C#文件编码类型已更改?

时间:2011-05-09 08:04:19

标签: c# encoding

我正在使用ASCII编码创建一个文件,但是当我测试获取该文件的编码类型时,它正在返回UTF8Encoding

任何人都可以解释原因或弄清楚我的错误吗?

CODE:

创建文件:

 FileStream _textStream = File.Open("CreateAsciiFile.txt", FileMode.Create, FileAccess.Write);
 StreamWriter _streamWriter = new StreamWriter(_textStream, System.Text.Encoding.ASCII);

 Byte[] byteContent = BtyeTowrite();  // This returns the array of byte
 foreach(var myByte in byteContent)
    _streamWriter.Write(System.Convert.ToChar(myByte));

阅读文件:

StreamReader sr = new StreamReader(@"C:\CreateAsciiFile.txt",true);
string LineText= sr.ReadLine();
System.Text.Encoding enc = sr.CurrentEncoding;

这里enc给出UTF8Encoding ......但我期待ASCII ???

2 个答案:

答案 0 :(得分:3)

在查询编码之前,您需要先阅读阅读器。所以在致电sr.CurrentEncoding之前尝试阅读一些东西。 StreamReader会查看尝试猜测编码的第一个字节,因为ASCII没有BOM,因此可能无法识别,您可能会得到错误的结果。例如,ASCII编码文件与ISO-8859-1编码文件之间没有差异(在二进制级别)。

答案 1 :(得分:1)

答案可能是here:“

  

每个有效的ASCII字符也是具有相同二进制值的有效UTF-8编码的Unicode字符。

换句话说,您的ASCII文件是有效的UTF-8和ASCII。它被检测为UTF-8。