Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# File Encoding Type changed?

Tags:

c#

encoding

I am creating a file with 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 ???

like image 215
PawanS Avatar asked Jun 04 '26 13:06

PawanS


1 Answers

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.

like image 101
Darin Dimitrov Avatar answered Jun 06 '26 02:06

Darin Dimitrov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!