Название: Проблема с русским текстом в текстовых файлах
Отправлено: 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(); } } } }
Название: Re: Проблема с русским текстом в текстовых файлах
Отправлено: Пантер от Марта 29, 2011, 18:41
1. toUtf8 не нужно 2. Используй void QTextStream::setCodec ( QTextCodec * codec )
Название: Re: Проблема с русским текстом в текстовых файлах
Отправлено: n2o от Марта 29, 2011, 19:02
Спасибо большое!!! Всё работает!
|