Я предлагаю вам открыть текстовый файл в шестнадцатеричном редакторе и посмотреть, что это на самом деле. Спецификация для UTF-16 равна 0xFEFF, которая, по-видимому, записывает код записи в поток, но в остальной части записи не указывается кодировка для использования - она будет использовать кодировку по умолчанию StreamWriter, которая является UTF-8 ,
Когда вы открываете файл в шестнадцатеричном представлении, если вы видите много символов 0x00 между символами, вы работаете с UTF-16, который является кодировкой. Unicode в C #. Если между символами нет 0x00, кодировка, вероятно, UTF-8.
Если последний случай, просто исправьте спецификацию, чтобы быть EF BB BF
, а не FE FF
, и нормально читайте с помощью UTF- 8.