• 6824阅读
  • 9回复

[提问]linux下面,QTSQL模块导致汉字不能够显示,怎么办? [复制链接]

上一主题 下一主题
离线wilth
 

只看楼主 倒序阅读 楼主  发表于: 2008-12-04
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
别人遇到的问题,让我帮忙解决,我搞了一个星期才找到问题,但是不知道怎么解决,希望高手能够解释一下.
环境:系统RHAS 4,QT4.3.3,MYSQL为linux自带。QT生成的选项为./configure -qt-sql-mysql -plugin-sql-mysql
现在的问题是一个能够正常显示汉字的程序(与数据库相关的代码在程序中已经去掉了),只要在pro文件中加入下面这一句
QT += sql
如果再按照如下方式编译运行:
qmake
make clean
make
./test
接着运行的时候,就只有title上面能够正确显示汉字,其他地方都没法显示。
就是说只是链接的时候加上了-lmysqlclient -lQtSql,其他的都没有变化,但是程序却不能够正常显示了。
离线XChinux

只看该作者 1楼 发表于: 2008-12-04
[qote]接着运行的时候,就只有title上面能够正确显示汉字,其他地方都没法显示。[/quote]
与mysql没关系吧。
title上的汉字是在哪里设定的(.ui里?代码里?或者其它配置文件里?)
界面上其它地方的汉字是从哪里设定的?

与你程序代码有关系。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线wilth

只看该作者 2楼 发表于: 2008-12-04
title上的汉字,和所有其他widget的汉字都是使用designer加上去的,全部是类似"\123\456"之类的,我担心有什么不对的地方,还特地改成了类似lable->settext(QString::fromUtf8("\123\456"))这样的了,title也一样。a->settile(QString::fromUtf8("\123\456")),但是title就能够显示,其他部分就不能够显示。
我明天把我的程序打包之后放上来给大家看看吧。
真奇怪
离线wilth

只看该作者 3楼 发表于: 2008-12-04
对了,我的源代码格式是dos下的ascii编码。因为程序是从window下面移植过去的。

有趣的是我使用ultraedit把源代码A的格式转换成为utf-8编码文件B话,linux打开该文件B,那么B前2个字符是乱码。同样我在linux下面把B的前2个搞定,让B成为linux下面正常的utf-8的文件C,再传到windows下面的时候,仍然前2个字母是乱码。
大家遇到过这种有趣的现象没有?
这就是我使用ascii编码的原因.
离线wilth

只看该作者 4楼 发表于: 2008-12-05
这是我的程序代码和工程,大家帮忙看看
内面有源代码。工程,makfile,编译好的可执行文件、以及运行效果截图。
谢谢大家了。
描述:带有QtSsql的工程
附件: sql.rar (26 K) 下载次数:15
描述:不带QtSql的工程
附件: nosql.tgz (31 K) 下载次数:10
离线sundp

只看该作者 5楼 发表于: 2008-12-05
我试了你的sql包里的程序。
我没做任何修改,只是qmake-qt4 -project  ,  qmake-qt4  , make  ,  ./tmp 然后的运行结果一切正常,见我的截图。
我用的环境是Everest 0.52,Qt4.3.3是自己从Trolltech网站上下的开源版源码,自己的编译的。编译的时候也没加什么特殊选项,都默认的。
人境结庐<http://sundp70.blog.163.com>心远地偏
离线sundp

只看该作者 6楼 发表于: 2008-12-05
不好意思打错了,Qt 是4.4.3  不是 4.3.3。
人境结庐<http://sundp70.blog.163.com>心远地偏
离线wilth

只看该作者 7楼 发表于: 2008-12-06
那是因为你QT中的SQL模块使用的是plugin的方式,实际上没有加载MySQL的包。所以和我的nomysql的结果一样,实际上我上传的2个文件,源代码一模一样。不一样的地方就是是链接的时候加上了-lmysqlclient -lQtSql
离线sundp

只看该作者 8楼 发表于: 2008-12-06
我的环境操作MySQL一切正常,为什么一定要在链接时加 -lmysqlclient ,你用了MySQL 的C API吗?
人境结庐<http://sundp70.blog.163.com>心远地偏
离线wilth

只看该作者 9楼 发表于: 2008-12-08
引用第8楼sundp于2008-12-06 20:26发表的  :
我的环境操作MySQL一切正常,为什么一定要在链接时加 -lmysqlclient ,你用了MySQL 的C API吗?


没有用上,但是我怀疑在加载libQtSql和libmysql的时候,程序改变了什么东西.导致我的程序出问题的。
快速回复
限100 字节
 
上一个 下一个