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兼容。