• 7657阅读
  • 3回复

【提问】如何在QT应用程序中向MYSQL数据库中插入中文字符串? [复制链接]

上一主题 下一主题
离线calf9007
 

只看楼主 倒序阅读 楼主  发表于: 2006-01-05
MySQL 版本是 mysql-3.23.54a-11
在命令行中
insert into test values ('你好');
在QT程序中可以显示出中文,
问题是:
如何在QT应用程序中向MYSQL数据库中插入中文字符串?
我在QT应用程序中向MYSQL数据库中插入中文字符串后,在命令行中select 或 在QT中显示都是"???"
请问如何解决?
离线XChinux

只看该作者 1楼 发表于: 2006-01-05
QT使用的是Unicode编码,所以你要把它转化为GB的才能插入到mysql 3.23中。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线calf9007

只看该作者 2楼 发表于: 2006-01-06
XChinux:
    谢谢!
    我在main()中:a.setDefaultCodec( QTextCodec::codecForName("GBK") );
    是不是说明:IDlineEdit->text()就是用"GBK"编码?
          (因为我试了:QMessageBox::information( this, "", IDlineEdit->text() );//可以显示中文)
          但不能正确插入到MySQL的表中?
      而QMessageBox::information( this, "", tr(IDlineEdit->text()) ); //显示的是"???"
      问题:这是为什么tr()后显示"??"呢?
      QMessageBox::information( this, "", "你好"); //显示的是"小方块"!!!==>ok
      QMessageBox::information( this, "", tr("你好") ); //显示的是中文
      QTextCodec* gbk_codec = QTextCodec::codecForName("GBK");
      QMessageBox::information( this, "", gbk_codec->toUnicode(IDlineEdit->text()) );
                                      //显示的也是"???"
      如果QMessageBox::information() 能显示小方块的话,就可以正确插入中文字符串.
        "小方块"证明是Unicode编码吧
      那现在如何将IDlineEdit->text()的内容变成"Unicode"编码呢?
[ 此贴被calf9007在2006-01-06 23:55重新编辑 ]
离线XChinux

只看该作者 3楼 发表于: 2006-01-06
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个