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

C#文件编码类型已更改?,c#,encoding,C#,Encoding,我正在使用ASCII编码创建一个文件,但是当我测试该文件的编码类型时,它返回UTF8Encoding 有人能解释一下原因或者找出我的错误吗 代码: 正在创建文件: FileStream _textStream = File.Open("CreateAsciiFile.txt", FileMode.Create, FileAccess.Write); StreamWriter _streamWriter = new StreamWriter(_textStream, System.Text.E

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

有人能解释一下原因或者找出我的错误吗

代码:

正在创建文件:

 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

。因此,在调用
sr.CurrentEncoding
之前,请尝试阅读一些内容。StreamReader查看第一个字节以尝试猜测编码,因为ASCII没有BOM表,因此可能无法识别,并且可能会得到错误的结果。例如,ASCII编码文件和ISO-8859-1编码文件之间没有区别(在二进制级别)。答案可能是:

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


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

Ok。。但这样也会返回相同的编码类型。如果它是正确的,那么ASCII应该一文不值……可能是正确的吗?但如果我将其保存为ASCII,为什么它会返回UTF8…?ASCII适合UTF8,但反过来不是正确的。UTF8不是s您得到UTF8是因为ASCII也与UTF8兼容。