首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

在自己机子下中文正常显示,其他人机子下显示乱码

2012-12-14 
在自己机子上中文正常显示,其他人机子上显示乱码1)在win7下用Qt 4.7.0写的一个应用,在自己机子上一切都正

在自己机子上中文正常显示,其他人机子上显示乱码
1)在win7下用Qt 4.7.0写的一个应用,在自己机子上一切都正常,但是发到其他人机子上(winxp,vista)时,所有的QLabel的text显示显示都是乱码。
我在main中添加了:
#include <QTextCodec>

QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

并且在需要的地方用了tr()

2)我要显示一个图片,然后点击该图片会有所触发,这个功能在自己的机子上正常,但是到其他人的机子上时,图片显示不出,但是点击图片应该出现位置时会有正确的触发。
我的.exe路径:C:\CollarSample\collarsample.exe  图片的路径:C:\CollarSample\images\1.jpg

谢谢解答!
[最优解释]
试下 把qcncodecs4.dll打包在程序里
[其他解释]
把plugins目录下的codecs和imageformats两个目录放到可执行文件目录,随程序一起发布。上述功能用到插件,发布插件有几种方法,这是最简单的一种。
[其他解释]
LZ试试把GB2312啊  UTF-8啊之类的换成System!
我用那些都是乱码。换成system才可以~
QTextCodec *codec = QTextCodec::codecForName("System");  
QTextCodec::setCodecForLocale(codec); 
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);

这段代码放main.cpp里面~
[其他解释]
LZ试一下
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
[其他解释]
LZ试一下
QTextCodec::setCodecForTr(QTextCodec::codecForLocal());
[其他解释]

引用:
试下 把qcncodecs4.dll打包在程序里

试过了,还是不行啊
[其他解释]
引用:
把plugins目录下的codecs和imageformats两个目录放到可执行文件目录,随程序一起发布。上述功能用到插件,发布插件有几种方法,这是最简单的一种。

这样做了,图片能显示了,用了lxkjlzz的QTextCodec::setCodecForTr(QTextCodec::codecForLocal());但是还是乱码。
[其他解释]
引用:
LZ试一下
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

用了这种都不显示了,乱码都没了
[其他解释]

把本地Qt字库拷贝到另外的机子上(我没试过,猜想而已)
[其他解释]
我用了这种方式才解决的:
exit_button->setText(QApplication::translate("MainWindow", "\351\200\200\345\207\272", 0, QApplication::UnicodeUTF8));
[其他解释]
引用:
我用了这种方式才解决的:
exit_button->setText(QApplication::translate("MainWindow", "\351\200\200\345\207\272", 0, QApplication::UnicodeUTF8));


QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
这句是何用意?您确定local编码是utf-8么,不确定就去掉。
我一直这么做:
1,QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
2,中文都用tr处理。
2,把plugins目录下的codecs随程序发布。
在windows和linux,aix,solaris下都没出现过问题。
只是有两种情况需要注意:
1、在windows下做的ui,要到unix下用,要注意字体。
2、从数据库中取出的字符串,要转换。
仅供参考,呵呵。
[其他解释]
可能是你用的字体,别人的机子上没有这个字体,是字体库原因
[其他解释]
关注一下。
[其他解释]
引用:
LZ试试把GB2312啊  UTF-8啊之类的换成System!


我用那些都是乱码。换成system才可以~
QTextCodec *codec = QTextCodec::codecForName("System");  
QTextCodec::setCodecForLocale(codec); 
QTextCodec::setCodecForCStrings(codec);
QT……



我也发现了这个问题,源代码 是用的  GB2312 编码的,
用这个 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
根本就不起作用。
换成
QTextCodec::setCodecForTr(QTextCodec::codecForName("System"));
才能正常显示中文。

但是我考虑,如果把这么编译出来的exe 文件,放到英文操作系统上运行,能正常显示中文么?
[其他解释]
引用:
LZ试试把GB2312啊  UTF-8啊之类的换成System!
我用那些都是乱码。换成system才可以~
QTextCodec *codec = QTextCodec::codecForName("System");  
QTextCodec::setCodecForLocale(codec); 
QTextCodec::setCodecForCStrings……

果然只有这样才行!

热点排行