File.WriteAllText
определенно не так ужасно глючит;если бы это было так, люди бы уже заметили.
Непосредственная проблема здесь в том, что ReadAllText
неправильно определяет кодировку вашего входного файла.Этот метод документирован для обнаружения кодировок на основе наличия спецификаций, и в документации говорится, что можно обнаружить форматы кодирования UTF-8 и UTF-32 (как с прямым порядком байтов, так и с прямым порядком байтов).
Основная проблема заключается в том, что вы не можете просто рассматривать файлы как «текст» сегодня, и обнаружение не очень надежно и не всегда работает;для гарантированных результатов вам также необходимо знать используемую кодировку .Вызовите другую перегрузку ReadAllText
, указав правильный параметр кодировки, и проблема будет решена.