Qt5的中文乱码问题如何解决



  • 之前Qt4写的代码用QTextCodec::codecForTr()来解决中文输入问题,在Qt5中取消了这个方法,请问Qt5中是怎么解决这个股问题的



  • QTextCodec::setCodecForTr(QTextCodec::codecForLocale())
    用这个试试.放在main函数里面.



  • QTextCodec::setCodecForTr(QTextCodec::codecForLocale())
    在Qt4里面我就是这么解决的,在Qt5里面没有setCodecForTr这个成员函数了



  • 只要你的源代码编码是utf-8就没问题,你可以直接用:
    QString = "你好";
    Qt5取消QTextCodec::setCodecForTr可能是因为它被滥用了。



  • Qt5 取消了QTextCodec::setCodecForTr()和QTextCodec::setCodecForCString()这两个函数。

    直接将 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8")) 至于QApplication实例之前即可解决;



  • [quote author="kenier" date="1363524790"]只要你的源代码编码是utf-8就没问题,你可以直接用:
    QString = "你好";
    Qt5取消QObject::tr可能是因为它被滥用了。[/quote]

    怎么可能,我用tr好好的。
    目前中文问题我统统生成一个ts文件,再用应用程序载入qm文件解决。



  • 如果使用Qt Creator的话,检查源文件是否是不带BOM的utf8文件,如果不是,那就显示的是乱码.



  • Qt5中,对于QString常量,建议使用QStringLiteral宏。
    QString s = QStringLiteral("你好");



  • 如果使用msvc2005/2008/2010,那么需要将包含中文的源文件保存为带BOM的UTF8格式,并且使用QStringLiteral;如果要处理本地文件路径,那么需要使用QFile::encodeName和QFile::decodeName

    参考:http://blog.csdn.net/dbzhang800/article/details/7325698


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.