Russian Qt Forum
Сентябрь 21, 2024, 16:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с русским текстом в текстовых файлах  (Прочитано 4386 раз)
n2o
Гость
« : Март 29, 2011, 18:25 »

Я пишу текстовый редактор под Symbian.
Когда ввожу русский текст в QTextEdit отображается нормально, потом сохраняю в файл .txt, открываю этот файл в этом же QTextEdit, и уже вместо русских букв закарючки.
Вот пример кода сохранения и открытия файла:
Код:
void LightText::OpenFile()
{
QFileDialog * OpenFileDialog;
OpenFileDialog = new QFileDialog(0);
QString filename=OpenFileDialog->getOpenFileName(
this,tr("Open"), "",
tr("Text Files (*.txt);;HTML (*.html *.htm);; All (*)"));
if(filename!="")
{
QFile f(filename);

if (!f.open(QIODevice::ReadOnly))
{
        QMessageBox::critical(this, tr("Error"),
                        tr("Could not open file"));
        return;
    }

f.open(QIODevice::ReadOnly);
QTextStream ts1(&f);
QString text=ts1.readAll();
text.toUtf8();
ui.textEdit->setText(text); 
f.close();
}
}
Код:
void LightText::SaveFile()
{
QString filt="";
QFileDialog dialog(this);
dialog.setNameFilter( tr("Text (*.txt);;HTML (*.html)"));
dialog.setAcceptMode(QFileDialog::AcceptSave);
dialog.setOptions(QFileDialog::DontUseNativeDialog);
QStringList fn1;
  if (dialog.exec())
  {
      fn1=dialog.selectedFiles();
filt=dialog.selectedNameFilter();
  }
  QString fn=fn1.back();
 
          if((fn.section( ".", -1, -1 ) != "html") && (fn.section(".", -1, -1 ) != "htm") && (filt=="HTML (*.html)"))
          fn+=".html";
  if((fn.section( ".", -1, -1 ) != "txt")&&(filt=="Text (*.txt)"))
fn+=".txt";
   
       QString type;
      if (fn != "")
      {
      QFile f( fn );
     
      if (!f.open(QIODevice::WriteOnly))
      {
      QMessageBox::critical(this, tr("Error"),
                            tr("Could not save file"));
            return;
          }
      else
      { 
      f.open( QIODevice::WriteOnly );
      QTextStream ts2( &f );
      if(fn.section( ".", -1, -1 ) == "txt")
      {
      QString text=ui.textEdit->toPlainText();
       ts2 << text.toUtf8(); 
       ts2.flush();
      f.close();
      }
      if((fn.section( ".", -1, -1 ) == "html")||(fn.section( ".", -1, -1 ) == "htm"))
            {
           QString text=ui.textEdit->toHtml();
            ts2 << text.toUtf8(); 
            ts2.flush();
           f.close();
      }
      }
      }
}
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Март 29, 2011, 18:41 »

1. toUtf8 не нужно
2. Используй void QTextStream::setCodec ( QTextCodec * codec )
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
n2o
Гость
« Ответ #2 : Март 29, 2011, 19:02 »

Спасибо большое!!! Всё работает!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.185 секунд. Запросов: 22.