Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Chinese
  4. Qt5的中文乱码问题如何解决
QtWS25 Last Chance

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

Scheduled Pinned Locked Moved Chinese
9 Posts 8 Posters 34.1k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • F Offline
    F Offline
    figo
    wrote on last edited by
    #1

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

    1 Reply Last reply
    0
    • D Offline
      D Offline
      dev_jiang
      wrote on last edited by
      #2

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

      1 Reply Last reply
      0
      • F Offline
        F Offline
        figo
        wrote on last edited by
        #3

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

        1 Reply Last reply
        0
        • K Offline
          K Offline
          kenier
          wrote on last edited by
          #4

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

          1 Reply Last reply
          0
          • N Offline
            N Offline
            nrejo
            wrote on last edited by
            #5

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

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

            Anything is good if you enjoy it.

            1 Reply Last reply
            0
            • J Offline
              J Offline
              jiangcaiyang
              wrote on last edited by
              #6

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

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

              1 Reply Last reply
              0
              • P Offline
                P Offline
                pridesky
                wrote on last edited by
                #7

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

                1 Reply Last reply
                0
                • L Offline
                  L Offline
                  LJoker
                  wrote on last edited by
                  #8

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

                  1 Reply Last reply
                  0
                  • U Offline
                    U Offline
                    uwydoc
                    wrote on last edited by
                    #9

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

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

                    1 Reply Last reply
                    0

                    • Login

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved