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中文乱码问题解决办法

也许你在用这个方法实现中文化,但它确实不够严谨 #include   int main(int argc, char *argv[]) {             QApplication ap...
  • w112121
  • w112121
  • 2014年03月17日 13:48
  • 715

QT中文乱码问题解决办法

在代码中添加头文件: #include   在Main函数中打开application后添加如下代码:   /*中文字体支持*/ QTextCodec::setCodecFo...
  • hitxiaya
  • hitxiaya
  • 2011年10月22日 17:12
  • 512

【转】qt中文乱码问题

转自:http://blog.csdn.net/brave_heart_lxl/article/details/7186631 以下是dbzhang关于qt中文乱码问题原因的阐述,觉...
  • lixinzhi512
  • lixinzhi512
  • 2015年12月03日 19:20
  • 233

qt 中文乱码 处理QByteArray类型里含中文的数据

qt解析tcp通信传来的xml时,中文有乱码 解决方法: 头文件添加 #include QByteArray tmpQBA = m_pSocket->readAll(); ...
  • gllg1314
  • gllg1314
  • 2015年07月21日 18:17
  • 4137

页面与页面之间超链接跳转中文乱码

在原页面一张图片上添加了一个链接,链接中有中文,于是出现下面的情况: 解决办法是在工程项目的server.xml文件的中加入URIEncoding=”utf-8”,如下: ...
  • SinvanChong
  • SinvanChong
  • 2016年12月15日 10:11
  • 470

QT中文的 QString 与 char* 转换

网上百度了很多的
  • u012564085
  • u012564085
  • 2014年08月19日 16:14
  • 4609

QString和char*的汉字乱码问题

1 QString是按unicode编码的,如果需要8bit编码则要加 tr(),要与 char* 相互转换则需要制定编码格式:utf-8,gb2312,gbk等 2 自己遇到的问题:      ...
  • ilearncpp
  • ilearncpp
  • 2012年10月23日 20:07
  • 3254

Qt unicode字串转中文

有时候,直接在html里面获取的字符串就是带有"\u"的,然后直接显示的时候"\u"也会显示出来。 这里就是教你如何去掉"\u"。 QString filename = "\\u6211\\u662f...
  • u012942868
  • u012942868
  • 2016年10月14日 22:58
  • 796

QT 中文转拼音

QString ConvertChineseUnicodeToPyt(QString chinese) { static int pyvalue[] = { -20319, -20317, ...
  • hss2799
  • hss2799
  • 2015年08月03日 14:56
  • 794

QT下中文字符编码的转换

通常在qt程序的main函数中,经常会有设置字符编码的函数:QTextCodec:: setCodecForTr(QTextCodec:: codecForName("GB18030"));  /...
  • vah101
  • vah101
  • 2010年12月23日 11:35
  • 14168
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Qt中文乱码问题解决办法【转】
举报原因:
原因补充:

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