我正在创建一个带有 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 编码文件之间没有区别(在二进制级别)。

关于C# 文件编码类型已更改?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5934154/

10-11 22:58
查看更多