Подскажите плиз с таким моментом. Беру текстовый файл, открываю, прогоняю его через QTextStream с заданной кодировкой, сохраняю... Все ок. Если 2-й раз сделать тоже самое - вместо русских букв кракозябры... Это нормально? ) Просто как-то непонятно... Помогите разобраться плиз )
Т.е. изначально у файла win1251. Прогнал сохранил в utf-8. На этом моменте все ок.. Потом опять его беру и прогоняю в utf-8 - вместо русских комментов - чушь... ( Ощущение что это как-то связано с юникодом...
Вот функция:
void CFileDecoder::DecodeFile(const QString& sSourceFile, const QString& sWantedCodec)
{
QFile oSourceFile(sSourceFile);
if (!oSourceFile.open(QIODevice::ReadOnly | QIODevice::Text))
{
//...
return;
}
QTextStream oInStream(&oSourceFile);
const QString sCurCodec = oInStream.codec()->name();
if (!sCurCodec.compare(sWantedCodec, Qt::CaseInsensitive)) return;
const QString sTargetFile = ...;
QFile oTargetFile(sTargetFile);
if (!oTargetFile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate))
{
//...
return;
}
QTextStream oOutStream(&oTargetFile);
oOutStream.setCodec(QTextCodec::codecForName(sWantedCodec.toStdString().c_str()));
oOutStream << oInStream.readAll();
Вот в этом месте я так поинмаю что name() возвращает не кодировку файла, а кодировку которую я выставил для всего приложения (вызовом статической функции)
QTextStream oInStream(&oSourceFile);
const QString sCurCodec = oInStream.codec()->name();
так ведь?