А вы уверены, что файл UTF8, верно?Если вы пишете строку str = sr.ReadToEnd();
, ставите точку останова на следующей строке и смотрите str
в Visual Studio, вы видите кириллический текст, верно?Попробуйте открыть файл в блокноте, Файл-> Сохранить как и выберите UTF8 в качестве кодировки.
Причина, по которой блокнот может «читать» файл, заключается в том, что он использует кодовую страницу пользователя, и в вашем случае это, вероятно,Кодовая страница Windows-1251 (кириллица).StreamReader
пытается прочитать файл как UTF8.Если вы хотите, вы можете заставить StreamReader
использовать другую кодовую страницу.Второй параметр - это Encoding
, который вы хотите использовать.Вы передаете Encoding.GetEncoding(1251)
для кириллицы.К сожалению, вы должны знать Encoding
«априори» (= до) чтения файла.