我正在创建一个带有 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/