开发者

C# File Encoding Type changed?

I am creating a file w开发者_Python百科ith ASCII encoding, but when I test to get the Encoding type of that file, it is returning UTF8Encoding.

Can anyone explain the reason or figure my mistake??

CODE:

Creating File:

 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));

Reading a file:

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

Here enc gives UTF8Encoding... But I am expecting ASCII ???


You need to read from the reader before querying the encoding. So before calling sr.CurrentEncoding try reading something. The StreamReader looks at the first bytes to try to guess the encoding and because ASCII has no BOM it might not be recognizable as such and you might get wrong results. For example there is no difference (at the binary level) between an ASCII encoded file a ISO-8859-1 encoded file.


The answer is probably here:"

Every valid ASCII character is also a valid UTF‑8 encoded Unicode character with the same binary value.

In other words, your ASCII file is both valid UTF-8 and ASCII. It is detected as UTF-8.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜