Qt 4.8.4中文显示问题

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u010780613/article/details/51505227

问题描述

      因为项目需要,重新用上了Qt 4.8.4,在之前的一段时间内,我一直是在使用Qt 5。实际上,本来项目是要使用Qt 5的,但是遇到几个莫名其妙的问题,解决办法繁琐,不利于后期项目的部署,所以采用Qt 4.8.4。

      好的,回归正题,使用的过程中碰到了老问题:Linux环境下中文显示问题。这个问题其实碰到很多次了,每次还得去网上找解决办法,还是自己记录一下,这样以后更方便。

     我的系统环境是Ubuntu,在Windows下的解决办法又是不一样的;


解决办法

      这种问题几乎都是编码问题导致的,这里就围绕编码这方面来讲。当然,还有可能是你自己的Qt没有编译、安装好,甚至是Linux系统出现一些问题,在这里先不讲这些。

      编码的话,一般常用的是“gb2312”,“utf-8”,我推荐使用“utf-8”。

      第一次我的解决办法是这样的:

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
      这个办法在大部分情况下,使用都没有任何问题,但是偏偏让我遇到特例了。是这样的:在一个自启动程序中调用Qt程序的时候,中文不显示。在这之前,我已经试过,直接运行那个程序并调用Qt程序,这样是正确的。这就有点郁闷了,但我相信还是编码没弄好。

      最终找到了正确的解决办法:

QTextCodec::setCodecForTr(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("utf-8"));
      上面这段代码需要加在QApplication a(argc, argv);之后。

展开阅读全文

没有更多推荐了,返回首页