Нужно из одного файл (в ANSI кодировке файл) считать русский текст и записать в другой файл. Делаю так:
QFile * file_imit = new QFile(this);
file_imit->setFileName("imitator.txt");
if(!file_imit->open(QFile::ReadOnly))
{
qDebug() << "error" << file_imit->errorString();
}
QByteArray buffer2;
buffer2 = file_imit->readLine();
QTextCodec::ConverterState state;
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QString text = codec->toUnicode(buffer2.constData(), buffer2.size(), &state);
qDebug() << "text" << text << "state.invalidChars" << state.invalidChars;
if (state.invalidChars > 0) //если не угадали
{
text = QString::fromLatin1(buffer2);
qDebug() << "fromLatin1" << text;
}
qDebug() << "manufactureNumber" << text;
QString manufacture = text;
//QString manufacture = "A0404 "; //это работает
QString buffer;
buffer.append("Заводской №:" + manufacture + "\r\n");
QFile file;
file.setFileName("info.txt");
if(file.open(QFile::WriteOnly))
{
file.write(buffer.toStdString().c_str(), buffer.toStdString().size());
file.close();
}
Вывод:
text "?0404 " state.invalidChars 1
fromLatin1 "A0404 "
manufactureNumber "A0404 "
В файле info.txt
Заводской №:À0404
По выводу все нормально считал «A0404» текст из файла, но криво пишет в другой файл. Подскажите где ошибка ?