以"中国人"为例子,命令行下>mysql -u 中国人 -p666666 --default-character-set=utf8 成功
同样情况下,用英文也正常,但汉字为什么不成功呢?
源码如下:
#include <QApplication>
#include <QTextCodec>
#include <QtSql>
#include <QtGui>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    const char *cn = "utf8";
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName(cn));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName(cn));
    QTextCodec::setCodecForTr(QTextCodec::codecForName(cn));
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("mysql");    //mainwindow的AfterLogin()中换作自己的数据库
    db.setUserName("中国人");        //不成功
    //db.setUserName("zgr");             //OK
    db.setPassword("666666");
    if (db.open()) {
        QMessageBox::information(0,"message","is OK");
    }
    else  {
        QMessageBox::critical(0,"message",db.lastError().text());
    }
    return 0;
}