Qt 4使用MySQL的中文问题解决方法
2011-09-19 23:26
746 查看
Qt 4使用MySQL的中文问题解决方法
2011-03-18 18:47 鉴客 oschina 我要评论(0) 字号:T |T
Qt 4使用MySQL的中文问题解决方法。在MySQL 4.1及其以上版本中Qt中文显示问题比较麻烦,有时候在QT中使用会出现问号或者乱码,现在说明一下在Qt中如何正确地配合使用。
AD:
在MySQL 4.1及其以上版本中Qt中文问题显示比较麻烦,有时候在QT中使用会出现问号或者乱码,现在说明一下在Qt中如何正确地配合使用。
先在MySQL中建表,使用中文,一般情况下就两种,GB(GB2312或者GBK)或者UTF8两种。两种的解决方法是相似的,这里我们以GBK为例说明。
一、数据库和表以及表里的字符相关字段(varchar, char, text等)都要使用gbk_chinese_ci这种方式,不这样做也可以,但这样做,会省很多麻烦。
二、重新编译Qt的MySQL驱动,需要修改src/sql/drivers/mysql/qsql_mysql.cpp文件。
要修改的部分如下:第一百零八行的codec函数,注意红色加粗部分,是我修改增加的语句。
代码片段
[C/C++/Objective-C]代码
static QTextCodec* codec(MYSQL* mysql) { return QTextCodec::codecForName("GBK"); #if MYSQL_VERSION_ID >= 32321 QTextCodec* heuristicCodec = QTextCodec::codecForName(mysql_character_set_name(mysql)); if (heuristicCodec) return heuristicCodec; #endif return QTextCodec::codecForLocale(); } //然后,重新编译qt的mysql驱动,这里就不多说了,请查看Qt相关文档
三、在Qt程序main函数中app后面开头处加入下面两句,加上这两个是省得不必要的麻烦
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); //QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
四、在Qt数据库连接后,运行SET NAMES 'GBK'语句
db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("yourdatabase"); db.setUserName("yourusername"); db.setPassword("yourpassword"); db.open(); db.exec("SET NAMES 'GBK'");
如果你要直接通过SQL语句修改数据,则需要正确的把输入的内容转变为GB码中
QTextCodec *codec = QTextCodec::codecForName("GBK"); QString strOut = codec->fromUnicode(lineEdit->text()).data(); QString strSql = "UPDATE user SET uinfo = '" + strOut + "'"; db.exec(strSql); //如果设置了codecForTr也为GBK的话,那就不用上面的手动转换步骤了
相关文章推荐
- QT中使用MySql中文乱码解决方法(windows下)
- QT 5.9版本 使用MSVC2015编译时出现中文字符乱码问题的解决方法
- mysql使用source 命令后表内中文乱码问题的解决方法
- QT中使用MYSQL中文乱码解决方法(Linux)
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- Qt4 使用 MySQL 的中文问题解决方法
- 【ubuntu linux】 QT中使用MYSQL中文乱码解决方法
- 某些开发版中的Qt Designer菜单等中文显示为乱码问题解决方法初探
- Django中使用MySQL添加中文乱码的问题解决
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- mysql查询中文问题解决方法
- mysql 中文乱码问题解决方法
- 关于mysql中文乱码问题的解决方法
- php读mysql中文乱码问题解决方法
- mysql使用source 命令乱码问题解决方法
- mysql导入中文数据方法及问题解决
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- cmd中MySQL中文数据乱码问题解决方法
- linux系统下mysql快速安装使用、远程访问及中文乱码问题解决
- 使用MySQL保存中文数据时,经常会遇到乱码问题的解决思路