Qt中文乱码问题解决办法【转】

原创 2011年07月20日 15:00:39
 

也许你在用这个方法实现中文化,但它确实不够严谨

Laguage» C++ Title» 出现频率最高的办法
  1. #include <QTextCodec>  
  2. int main(int argc, char *argv[]) 
  3. {  
  4.            QApplication app(argc, argv);  
  5.            //设置中文开始
  6.            QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030")); 
  7.            //设置中文结束
  8.            return app.exec();  
  9. }  


很多地方都会告诉你,这样可以实现QT支持中文,包括我看的教程书上也是,他甚至告诉我要支持中文必须加入这段代码,但我想告诉你,这个办法是有问题的,而且这个问题还不小!我在两台同样是XP系统的机子上移植就出现了中文乱码问题,而且所有中文都是用了tr()的。所以请别迷信那些教程,实践才是真理!

你可以尝试这个方法

Laguage» C++ Title»
  1. #include <QTextCodec>  
  2. int main(int argc, char *argv[]) 
  3. {  
  4.            QApplication app(argc, argv);  
  5.            //设置中文开始
  6.            QTextCodec *codec = QTextCodec::codecForName("GB2312");  
  7.            QTextCodec::setCodecForLocale(codec);  
  8.            QTextCodec::setCodecForCStrings(codec);  
  9.            QTextCodec::setCodecForTr(codec);  
  10.            //设置中文结束
  11.            return app.exec();  
  12. }  

虽然这个方法看似更为严谨,你可以尝试,不过这么写还是会有问题,至少没有解决我的问题。这也是我网上看到的出现频率也挺高的方法,不过我想说的是:其实这个办法治标不治本,因为它后面只是对拓宽对中文支持的范围,而一般我们都建议把中文写在tr(“”)里。

推荐个比较保险的办法

Laguage» C++ Title» 我推荐的方法
  1. int main(int argc, char *argv[]) 
  2. {
  3.     QApplication a(argc, argv);
  4.     QTextCodec *codec = QTextCodec::codecForName("System");    //获取系统编码
  5.     QTextCodec::setCodecForLocale(codec);
  6.     QTextCodec::setCodecForCStrings(codec);
  7.     QTextCodec::setCodecForTr(codec);
  8.     return a.exec();
  9. }

这里获取了系统字体编码,解决了我的问题,个人也觉得这个办法应该是个不错的解决方案。

也可能是字体选择不当造成的乱码

如果你始终解决不了乱码问题,可以尝试设置下字体,但其实是否是字体造成的乱码的方法很简单,如果出现的是一个个方块,便是字体设置不当,否则,优先考虑编码设置。

 

转自 http://www.ctogo.net/313.html































































相关文章推荐

Qt 5.x中出现中文乱码的解决方法

Qt 5.x中出现中文乱码的解决方法中文乱码的问题,相信每个程序员都会遇到,并非Qt的特有,只是在使用Qt进行开发的过程中,总感觉有一种我去,Qt的字符串处理和编码以及国际化这些内容都做得挺好的,给我...

QT解决中文乱码问题(1)

解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK) http://blog.csdn.net/libaineu2004/article/details/19245205 ...

Qt中文乱码问题解决办法

也许你在用这个方法实现中文化,但它确实不够严谨Laguage» C++ Title» 出现频率最高的办法#include    int main(int argc, char *argv[])  { ...

JSP中文乱码问题解决办法

  • 2012年10月31日 19:17
  • 51KB
  • 下载

IntelliJ IDEA 中文乱码问题解决办法(转)

转自   http://www.cnblogs.com/xingma0910/p/4651889.html 自己最近在使用IntelliJ IDEA,发现总是出现中文乱码的问题,在网上找...

MySQL中文乱码问题解决办法

MySQL中先直接插入char类型的字段时,记录不能为中文的,否则会提示出错信息。如下: Incorrect string value:’\xc8\xCB\xC0\xED’ for column ‘...

常见php与mysql中文乱码问题解决办法

乱码问题1: 用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号。 症状: 用PHPmyAdmin输入汉字正常,但当PHP网页显示MySQL...
  • lxhjh
  • lxhjh
  • 2016年08月04日 10:12
  • 910

MySQL客户端输出窗口显示中文乱码问题解决办法

最近发现,在MySQL的dos客户端输出窗口中查询表中的数据时,表中的中文数据都显示成乱码,如下图所示:    上网查了一下原因:之所以会显示乱码,就是因为MySQL客户端输出窗口显示中文时使用的...

ubuntu gedit中文乱码的问题解决办法

转自:http://www.jbxue.com/LINUXjishu/14929.html 发布:脚本学堂/Ubuntu/Debian  编辑:JB02   2013-12-21 22:43...

IntelliJ IDEA 中文乱码问题解决办法

Windows下使用IntelliJ IDEA时发现控制台和菜单等地方中文乱码,显示为?号,试过网上的各种方法均无效。把乱码的文本复制到别的地方可以正常显示,判断可能跟字体相关。将字体更换为中文(乱码...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt中文乱码问题解决办法【转】
举报原因:
原因补充:

(最多只允许输入30个字)