search
HomeDatabaseMysql TutorialQT5.2中文乱码解决问题
QT5.2中文乱码解决问题Jun 07, 2016 pm 03:43 PM
ChineseGarbled charactersSummarizeSolve the problem

总结: 之前Qt4写的代码用QTextCodec::codecForTr()来解决中文输入问题,为了防止错误的滥用,在Qt5中已经取消了这个方法。 Qt5VS2010 中文乱码问题的解决:【请记住VS2010必须打普定vs2010sp1,下面代码才有效】 #if _MSC_VER = 1600 #pragma execution_cha

 总结:之前Qt4写的代码用QTextCodec::codecForTr()来解决中文输入问题,为了防止错误的滥用,在Qt5中已经取消了这个方法。

          Qt5+VS2010中文乱码问题的解决:【请记住VS2010必须打普定vs2010sp1,下面代码才有效】

<p><span><span>#if _MSC_VER >= 1600</span>
<span>#pragma</span><span> execution_character_set</span><span>(</span><span>"utf-8"</span><span>)</span>
<span>#endif</span></span></p>


Qt+Visualstudio的中文乱码总结:

1、Qt4.7+VS2008,通过如下方法:

  1. #include   
  2. int main(int argc, char *argv[])  
  3. {  
  4.     QApplication a(argc, argv);  
  5.   
  6.     // 以下部分解决中文乱码  
  7.     QTextCodec *codec = QTextCodec::codecForName("GBK");  
  8.     QTextCodec::setCodecForTr(codec);  
  9.     QTextCodec::setCodecForLocale(codec);  
  10.     QTextCodec::setCodecForCStrings(codec);  
    }

 

2、Qt5.2+VS2010打入补丁VS2010sp1,也会支持 #pragma execution_character_set ("utf-8"),顺利解决qt中文乱码问题

          在main函数之前加入:

  1. #if _MSC_VER >= 1600  
  2. #pragma execution_character_set("utf-8")  
  3. #endif  

 

3、Qt5.2+ VS2012 不支持 #pragma execution_character_set ("utf-8") 导致utf-8编码的无法直接输出中文,qt首当其冲受害。 微软官方回应,再下一个版本中会修正这个问题:

          由 Microsoft 在 2013/1/3 於 10:24 公佈

Hi Seek:
    Thanks for reporting the issue.
    A fix for this issue has been checked into the compiler sources. The fix should show up in the next release of Visual C++.

Xiang Fan
Visual C++ Team

4、Qt5.2+VS2013支持 #pragma execution_character_set ("utf-8"),所以qt也赶紧发布了一个

         Visual Studio Add-in 1.2.3 Alpha for Qt5 (supports versions 2008, 2010, 2012 and 2013, ess edition)

          在main函数之前加入:

  1. #if _MSC_VER >= 1600  
  2. #pragma execution_character_set("utf-8")  
  3. #endif  


5、回到 Qt5 的中文输出问题。

 Qt默认支持 VS2010/MinGW/Gcc 等编译器,而它们现在都已经真正支持UTF8了。当然,VS2010 对UTF8的支持会入侵代码(#pragma execution_character_set("utf-8"))。 看看Qt官方论坛别人是怎么说的:

http://qt-project.org/forums/viewthread/17617

Nothing special need to do, it will works by default. 
If the exec-charset of your your compiler is UTF-8.

       简单的说,从Qt5开始,源代码就是默认UTF8编码的。

       当然,VC2010编辑器对带BOM的UTF8也是认识,只可惜VC2010编译器根本承认它是UTF8!

       在继续看官方论坛的回复:

You can write a simple example like this

  1. You can write a simple example like this  
  2.   
  3. #include   
  4. #include   
  5.    
  6.   #if _MSC_VER >= 1600  
  7.   #pragma execution_character_set("utf-8")  
  8.   #endif  
  9.    
  10.   int main(int argc, char *argv[])  
  11.   {  
  12.       QApplication a(argc, argv);  
  13.       QLabel label("???ó??ń??");  
  14.       label.show();  
  15.    
  16.       return a.exec();  
  17.   }  
  18. If other people can reproduce your problem, you can file a bug.  

If other people can reproduce your problem, you can file a bug.

       较完整的解决方案(增加了Qt4/Qt5和非VC环境的判断):

  1. // Coding: UTF-8(BOM)  
  2. #if defined(_MSC_VER) && (_MSC_VER >= 1600)  
  3. # pragma execution_character_set("utf-8")  
  4. #endif  
  5.    
  6. #include   
  7. #include   
  8. #include   
  9.    
  10. int main(int argc, char* argv[])  
  11. {  
  12.     QApplication app(argc, argv);  
  13.    
  14.    #if QT_VERSION   
  15.         #if defined(_MSC_VER) && (_MSC_VER   
  16.                 QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030-0"));  
  17.         #else  
  18.                 QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));  
  19.         #endif  
  20.    #endif  
  21.    
  22.     QLabel *label = new QLabel(QObject::tr("你好!"));  
  23.     label->show();  
  24.   
  25.     return app.exec();  
  26. }  

 另外:Qt4/Qt5/Linux: 只要是默认的UTF8环境, 应该都没问题

其实这个问题不是Qt特有的, 追根溯源还是C/C++和编译器的问题.即使是支持UTF16的Java也同样难逃此问题。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何将windows 7的语言设置为中文如何将windows 7的语言设置为中文Dec 21, 2023 pm 10:07 PM

有些朋友可能会在安装系统时不小心设置成了英文,结果所有界面都变成了英文,看都看不懂。其实我们可以在控制面板中设置语言,将语言更改为中文,下面就一起来看一下更改的方法吧。win7如何更改语言为中文1、首先点击屏幕左下角的按钮,然后选择“ControlPanel”2、找到“Clock,Language,andRegion”下的“Changedispalylanguage”3、点击下方“English”就可以在下拉菜单中选择简体中文了。4、确定之后点击“Logoffnow”注销并重启电脑。5、回来之后

放弃中国市场?《万智牌》官宣:今后不再推出中文实体卡放弃中国市场?《万智牌》官宣:今后不再推出中文实体卡Feb 23, 2024 pm 06:46 PM

2月23日消息,官方威世智今日宣布,自《摩登新篇3》之后将不再生产葡萄牙语版产品,自《Bloomburrow》开始停止生产中文版实体卡牌产品。完整公告如下:万智牌实体卡牌产品语言调整通知万智牌作为一款全球知名游戏,一直深受全球玩家的喜爱。今年,我们遗憾地做出这个艰难的决定:在《摩登新篇3》之后将不再生产葡萄牙语版产品,自《Bloomburrow》开始停止生产中文版实体卡牌产品。我们深知这对热爱万智牌的中国和葡萄牙玩家是一次重大的变化,但这一决策并不是对玩家热情的否定。请大家相信,我们将继续在这两

如何将Win10电脑的语言设置为汉语?如何将Win10电脑的语言设置为汉语?Jan 05, 2024 pm 06:51 PM

有时候我们再刚刚入手安装好电脑系统之后发现系统时英文的,遇到这种情况我们就需要把电脑的语言改成中文,那么win10系统里面该怎么把电脑的语言改成中文呢,现在就给大家带来具体的操作方法。win10电脑语言怎么改成中文1、打开电脑点击左下角的开始按键。2、点击左侧的设置选项。3、打开的页面选择“时间和语言”4、打开后,再点击左侧的“语言”5、在这里就可以设置你要的电脑语言。

怎么将eclipse语言设置为中文怎么将eclipse语言设置为中文Jan 04, 2023 pm 03:50 PM

eclipse语言设置为中文的方法:1、打开浏览器找到语言包下载地址,并将最新的安装包地址复制;2、打开eclipse,点击“help”,然后点击安装新的插件;3、点击“Add”,在Location中粘帖网址;4、在下拉菜单中找到简体中文包,进行勾选,点击Next等待安装;5、重启eclipse即可。

正确在matplotlib中显示中文字符的方法正确在matplotlib中显示中文字符的方法Jan 13, 2024 am 11:03 AM

在matplotlib中正确地显示中文字符,是很多中文用户常常遇到的问题。默认情况下,matplotlib使用的是英文字体,无法正确显示中文字符。为了解决这个问题,我们需要设置正确的中文字体,并将其应用到matplotlib中。下面是一些具体的代码示例,帮助你正确地在matplotlib中显示中文字符。首先,我们需要导入需要的库:importmatplot

Win11系统语言如何改成中文Win11系统语言如何改成中文Jun 29, 2023 pm 01:15 PM

  Win11系统语言如何改成中文?近期有用户刚给电脑安装了最新的Win11系统,但是在使用中发现系统语言为英文,自己使用起来很吃力,为此有没有什么方法可以将系统语言改成中文呢?方法很简单,下面我们来看看这篇Win11系统语言设置为中文的方法吧。  Win11系统语言设置为中文的步骤  1、首先我们进入齿轮按钮的settings,然后找到其中的Time打开时间和语言。  2、在时间和语言中点击左边栏的Language选项,然后在右侧点击Addalanguage。  3、接着在上方搜索框输入chi

解决Ubuntu系统中WPS无法输入中文的问题该做什么?解决Ubuntu系统中WPS无法输入中文的问题该做什么?Dec 30, 2023 pm 12:55 PM

虽然Linux有LibreOffice,但是对微软的office兼容不是很好,有些排版会出现问题。而几年前,金山也开发了Linux版的WPS,不过在Ubuntu上使用,无法直接输入中文,这咋弄才可以让WPS正常输入中文呢1、打开WPS的文档,右上角的输入法已经是中文了,但是实际输入的时候,只能输入英文字母,出不了中文2、在终端输入:sudogedit/usr/bin/wps3、从第二行加上:exportXMODIFIERS="@im=fcitx"exportQT_IM_MODULE=&

解决中文乱码问题的matplotlib方法解决中文乱码问题的matplotlib方法Jan 13, 2024 pm 02:49 PM

解决matplotlib中文乱码问题的方法,需要具体代码示例Matplotlib是一个常用的用于数据可视化的Python库,可以生成各种图表和图形。然而,对于中文用户来说,经常会遇到一个问题,就是生成的图表中的中文字符显示乱码。这个问题可以通过一些简单的方法来解决。本文将介绍一些常见的解决方法,并附上相关的代码示例,帮助读者解决这个烦人的问题。方法一:设置字

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.