Я пишу текстовый редактор под 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();
}
}
}
}