Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2012, 18:43   #1
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию Кракозябры при открытии

Пишу небольшой тексторый редактор с простейшими возможностями форматирования. Наваял RichTextBox и пытаюсь загрузить туда файл. Чтобы сделать это использую вот такой код.
Код:
private void FileOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog OpenFile = new OpenFileDialog();
            OpenFile.Filter = "TXT-files (*.txt)|*.txt|All Files|*.*";
            OpenFile.Title = "Открыть документ";
            if (OpenFile.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    MainTextBox.Enabled = true;
                    MainTextBox.LoadFile(OpenFile.FileName, RichTextBoxStreamType.PlainText);
                    StatusString.Text = OpenFile.FileName; //Снизу лейбл с путем к текущему файлу
                    TextChangedFlag = false;  //Флаг отслеживающий измения в тексте
                }
                catch (Exception FE)
                {
                    MessageBox.Show(FE.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
И он прекрасно открывает файлы, если я создал их, предположим, в блокноте. Для открытия юзаю такой код:

Код:
 private void FileSave_Click(object sender, EventArgs e)
        {
            System.IO.FileStream file = null;
            System.IO.StreamWriter fout = null;
            if (TextChangedFlag && SaveButton.Enabled)
            {
                try
                {
                    file = new System.IO.FileStream(StatusString.Text, System.IO.FileMode.Truncate);
                    fout = new System.IO.StreamWriter(file);
                    foreach (var S in MainTextBox.Lines)
                    {
                        fout.WriteLine(S);
                    }
                    TextChangedFlag = false;
                }
                catch (Exception SE)
                {
                    MessageBox.Show(SE.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    if (fout != null)
                    {
                        fout.Flush();
                        fout.Close();
                    }
                }

            }
        }
Теперь о проблеме. Запускаю файл, он отлично заливается в RichTextBox далее я например стираю весь текст и пишу Привет. Сохраняю файл, потом опять открываю и вижу вот такой текст:
Цитата:
Привет
Как я понимаю проблема в кодировке. Как её решить? Прошу сильно не ругать за мой подход к решению задачи, я только-только в WinForms начал разбираться.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 13.03.2012, 18:12   #2
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Два дня тишины. Ковырялся-ковырялся. Не нашел ничего более путного чем сделать так:

Открытие:
Код:
                    Encoding enc = Encoding.GetEncoding(1251);
                    sr = new System.IO.StreamReader(OpenFile.FileName, enc);
                    MainTextBox.Enabled = true;
                    MainTextBox.Text = sr.ReadToEnd();
Сохранение:
Код:
Encoding enc = Encoding.GetEncoding(1251);
                    System.IO.FileStream fout = new System.IO.FileStream(StatusString.Text,System.IO.FileMode.Truncate);
                    file = new System.IO.StreamWriter(fout,enc);
                    foreach (var S in MainTextBox.Lines)
                    {
                        file.WriteLine(S);
                    }
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] Кракозябры при копирование текста в другую программу JonMagon Помощь студентам 2 11.12.2018 19:59
Кракозябры при выводе Syltan HTML и CSS 4 11.12.2010 19:59
Скрытие панелей инструментов при открытии и отображение при закрытии документа Василий. Microsoft Office Word 0 23.10.2010 00:41
Кракозябры при редактировании таблиц Balvenie БД в Delphi 1 23.04.2007 16:18