Файл объявляет себя как UTF-8 - так почему вы используете ASCII для кодирования его в двоичный файл? В UTF-8 есть много символов, которые не могут быть представлены в ASCII. Вам даже нужно иметь файл в текстовом виде в памяти, чтобы начать с? Почему бы просто не загрузить его как двоичные данные для начала (например, File.ReadAllBytes
)?
Если вам нужно начинать со строки, используйте Encoding.UTF-8
(или Encoding.Unicode
, хотя это, вероятно, приведет к увеличению байтового массива), и все должно быть хорошо. Этот дополнительный символ является меткой порядка байтов, которая не может быть представлена в ASCII, следовательно, "?" символ замены.