Проблема с русскоязычным текстом при вставке в БД. В приложении сделано так:
QTextCodec::setCodecForLocale(QTextCodec::codecForName("Windows-1251")); ///< установка Windows-1251
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); ///< для внутреннего преобразования
QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); ///< для функций перевода tr()
в функции main().QSqlQuery query(db);
query.prepare("insert into [AztLayerName]([Id], [Number], [Name]) values(:Id, :Number, :Name)");
while(!out.atEnd())
{
QString line(out.readLine()), left_line(line.section(QChar(' '), 0, 0).simplified()),
right_line(line.section(QChar(' '), 1, line.size()).simplified());
query.bindValue(QString(":Id"), id);
query.bindValue(QString(":Number"), left_line.toInt());
query.bindValue(QString(":Name"), right_line);
bool is_ins = query.exec();
++id;
}
Используй QTextStream и устанавливай кодек ему.
1. Да сразу не заметил, что ты определяешь 3 QString. ИМХО, правильнее писать
QString line(out.readLine());
QString left_line(line.section(QChar(' '), 0, 0).simplified());
QString right_line(line.section(QChar(' '), 1, line.size()).simplified());
QTextStream stream (&file);
stream.setCodec ("CP1251");
QString line(out.readLine());
QString left_line(line.section(QChar(' '), 0, 0).simplified());
QString right_line(line.section(QChar(' '), 1, line.size()).simplified());
QTextStream stream (&file);
stream.setCodec ("CP1251");
Скорее всего это уже к Кьюту отношения не имеет. Посмотри тут http://www.google.ru/search?sourceid=chrome&ie=UTF-8&q=paradox+%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0
А может записи в самой БД хранятся в другой кодировке?
----
UPD
А сам файл текстовый считывается нормально? В дебаге смотрел на значения?
query.prepare("insert into AztLayerName(Id, [Number], Name) values(?, ?, ?)");
while(!out.atEnd())
{
QString line(out.readLine()), left_line(line.section(QChar(' '), 0, 0).simplified()),
right_line(line.section(QChar(' '), 1, line.size()).simplified());
query.bindValue(0, id);
query.bindValue(1, left_line.toInt());
query.bindValue(2, right_line);
bool is_ins = query.exec();
++id;
}
return record(index.row()).value("Name").toString().toLatin1();
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)