The ASCII encoder substitutes a ? when it encounters a character code above 127. What you probably have in the file is an extended ascii character set, the most common of which is represented in Windows by the code page 1252, Single Byte Character Sets (SBCS)[^]. You can get an instance of the encoding with Encoding coder = Encoding.GetEncoding(1252); If you are going to write to the file I strongly suggest that you do some round trip tests to check that you have selected the correct encoding. i.e. Read the file Convert to a string using the encoding Convert the string back to bytes Write to a new file Check that the orignal and rewritten file are identical Alan.