Как правильно открыть файлы UTF-8 в RichTextBox? - PullRequest
3 голосов
/ 04 сентября 2011

У меня есть вопрос. Этот код прекрасно открывает текстовые файлы с английским текстом, но когда я пытаюсь открыть текстовые файлы с кириллическим текстом ... кириллические символы - это "квадраты". Возможно ли решить эту проблему?

        string fileData = openFileDialog1.FileName;
        StreamReader sr = new StreamReader(fileData);
        richTextBox.Text = sr.ReadToEnd();
        sr.Close();

        SavedFile = saveFileDialog1.FileName;
        dataTextBox.SaveFile(SavedFile, RichTextBoxStreamType.PlainText);

Решение:

        string fileData = openFileDialog1.FileName;
        StreamReader sr = new StreamReader(fileData, Encoding.Default);
        richTextBox.Text = sr.ReadToEnd();
        sr.Close();

Ответы [ 2 ]

2 голосов
/ 04 сентября 2011

А вы уверены, что файл UTF8, верно?Если вы пишете строку str = sr.ReadToEnd();, ставите точку останова на следующей строке и смотрите str в Visual Studio, вы видите кириллический текст, верно?Попробуйте открыть файл в блокноте, Файл-> Сохранить как и выберите UTF8 в качестве кодировки.

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

1 голос
/ 04 сентября 2011

StreamWriter, по умолчанию считывается в формате кодировки UTF-8, если явно не указано.

Попробуйте преобразовать текст в кодировку Windows и попробуйте снова прочитать его с тем же кодом.

...