//同样情况下,英文正常
//汉字情况下,命令行终端方式, ODBC都能登录正常
#include <QApplication>
#include <QTextCodec>
#include <QtSql>
#include <QtGui>
#include <QObject>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//user表user字段字符集设置为utf8,命令行登录正常,也设置过gbk
//命令行下:mysql -u 中国人 -p666666 --default-character-set=gbk //成功
char *code ="UTF-8"; //GBK,codeForLocal()等都不行
QTextCodec::setCodecForCStrings(QTextCodec::codecForName(code));
QTextCodec::setCodecForLocale(QTextCodec::codecForName(code));
QTextCodec::setCodecForTr(QTextCodec::codecForName(code)); //在这个位置添加这行代码
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName(QObject::tr("localhost"));
db.setDatabaseName("mysql");
db.setUserName("中国人"); // db.setUserName(QObject::tr("zg")); //成功
db.setPassword("666666");
if (db.open()) {
QMessageBox::information(0,"OK","成功");
app.quit();
}
else {
QMessageBox::critical(0,"错误","sorry");
app.quit();
}
//return app.exec();
}