问题描述:
因为项目需要,重新用上了Qt 4.8.4,在之前的一段时间内,我一直是在使用Qt 5。实际上,本来项目是要使用Qt 5的,但是遇到几个莫名其妙的问题,解决办法繁琐,不利于后期项目的部署,所以采用Qt 4.8.4。
好的,回归正题,使用的过程中碰到了老问题:Linux环境下中文显示问题。这个问题其实碰到很多次了,每次还得去网上找解决办法,还是自己记录一下,这样以后更方便。
解决办法:
这种问题几乎都是编码问题导致的,这里就围绕编码这方面来讲。当然,还有可能是你自己的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);之后。