QSqlTableModelにレコードを追加するとき、私は問題を抱えている:ポリッシュ文字の「不正な文字列値」(QSqlTableModel、MySQLの)
QString name = out.getName().left(384/6); //UTF-16 max bytes/char = 6
qDebug() << "name:" << name;
record.setValue("name", name); //VARCHAR(384)
record.setValue("data", out.getData());
if (!boardLayoutsModel->insertRecord(-1, record)) {
qDebug() << "err:" << boardLayoutsModel->lastError().text();
}
名前はベースのみ文字が含まれている場合、すべてが正常である:コードは
を返します。名: "ノヴィのukladのtablicy"
それはポーランドの文字が含まれているので、もし名前が、にQLineEditから取得され、例えば"ノヴィのukładのtablicyは、" テキスト・フィールドに表示され、それが返されます。
名: "ノヴィのuk³adのtablicy"
ERR:「不正な文字列値: '\ xB3ad taの...' 列は '行1 QMYSQL3で名」:文を実行することができません」
私はtoUtf8 :: QStringのを使用することを考え出し、その後、エラーがないとテーブルにSELECT(との良好な値を返します 『』 L)が、何Qtがデータベースから戻ってくるのは間違っていて、まだ異なります:
ノヴィukÅadのtablicy
は今、私はそれがQStringの私の知る限りのネイティブ照合だとしてutf16_unicode_ciするutf8_general_ciから、データベースの照合順序を変更しました。それでも同じエラーが表示されます。私は値を読み取るためにQString :: fromUtf8を使用しますが、QSqlTableModelはそれ自身で動作します。奇妙なことは、QSqlTableModelを使ってMySQL/Qtを統合するのは初めてのことではありませんが、これまでにも同様の問題があったことはありません... Qtをアップグレードしたばかりです。何か案は?
で固定