• 5319阅读
  • 3回复

[提问]用中文登录mysql失败,为什么? [复制链接]

上一主题 下一主题
离线fzx374
 

只看楼主 倒序阅读 楼主  发表于: 2011-05-22
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
以"中国人"为例子,命令行下>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;
}

离线hehui

只看该作者 1楼 发表于: 2011-05-23
文件本身也要是UTF8~
离线fzx374

只看该作者 2楼 发表于: 2011-05-23
谢谢1楼
不过我试过文件本身也是UTF8,在windowsXP下和Ubuntu下都试过,可是不行。
你能试一下吗?该问题困扰我好久了,原来在C#下就没有解决(资料上讲C#和Qt与Mysql的连接都源于C)

离线raidsan

只看该作者 3楼 发表于: 2011-05-26
试试  db.setUserName(QTextCodec::codecForName("GBK")->toUnicode("中国人"))
快速回复
限100 字节
 
上一个 下一个