首页 数据库 mysql教程 QT5.2中文乱码解决问题

QT5.2中文乱码解决问题

Jun 07, 2016 pm 03:43 PM
中文 乱码 总结 解决问题

总结: 之前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也同样难逃此问题。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1419
52
Laravel 教程
1313
25
PHP教程
1262
29
C# 教程
1235
24
使命召唤战区手游怎么设置中文 使命召唤战区手游怎么设置中文 Mar 22, 2024 am 08:41 AM

使命召唤战区作为全新上线的一款手游,有很多的玩家都非常的好奇要怎么样才能够将这款游戏的语言设置为中文,其实非常的简单,玩家只需要下载中文的语言包,随后进行使用就可以进行修改了,详细的内容可以在这篇中文设置方法介绍之中进行了解,让我们一起来看看吧。使命召唤战区手游怎么设置中文1、首先进入游戏,点击界面右上角的设置图标。2、在出现的菜单栏中,找到【Download】这个选项并且点击。3、在这个页面中选择【SIMPLIFIEDCHINESE】(简体中文),就可以对简体中文的安装包进行下载了。4、回到设

如何在PHP Dompdf中正确显示中文字符 如何在PHP Dompdf中正确显示中文字符 Mar 05, 2024 pm 01:03 PM

如何在PHPDompdf中正确显示中文字符在使用PHPDompdf生成PDF文件时,遇到中文字符显示乱码的问题是一个常见的挑战。这是因为Dompdf默认使用的字体库中不包含中文字符集。为了正确显示中文字符,我们需要手动设置Dompdf的字体,并确保选择支持中文字符的字体。以下是一些具体的步骤和代码示例来解决这个问题:第一步:下载中文字体文件首先,我们需要

VSCode 设置中文:完全指南 VSCode 设置中文:完全指南 Mar 25, 2024 am 11:18 AM

VSCode设置中文:完全指南在软件开发中,VisualStudioCode(简称VSCode)是一个常用的集成开发环境。对于使用中文的开发者来说,将VSCode设置为中文界面可以提升工作效率。本文将为大家提供一个完整的指南,详细介绍如何将VSCode设置为中文界面,并提供具体的代码示例。第一步:下载安装语言包在打开VSCode后,点击左

修复PHP Dompdf中文乱码的有效途径 修复PHP Dompdf中文乱码的有效途径 Mar 05, 2024 pm 04:45 PM

标题:修复PHPDompdf中文乱码的有效途径在使用PHPDompdf生成PDF文档时,中文字符出现乱码是一个常见的问题。这一问题通常源于Dompdf默认不支持中文字符集,导致中文内容无法正确显示。为了解决这一问题,我们需要采取一些有效的途径来修复PHPDompdf中文乱码的问题。1.使用自定义字体文件一个解决Dompdf中文乱码问题的有效途径是使用

Excel表格怎么设置显示中文?Excel切换中文操作教程 Excel表格怎么设置显示中文?Excel切换中文操作教程 Mar 14, 2024 pm 03:28 PM

  Excel表格是现在很多人都在使用的办公软件之一,有些用户因为电脑是win11系统,因此显示的是英文界面,想要切换成中文界面,但是不知道应该怎么操作,针对这个问题,本期小编就来为广大用户们进行解答,一起来看看今日软件教程所分享的内容吧。  Excel切换中文操作教程:  1、进入软件,点击页面上方工具栏左侧的“File”选项。  2、在下方给出的选项中选择“options”。  3、进入新界面后,点击左侧的“language”选项

balatro设置中文方法 balatro设置中文方法 Mar 07, 2024 pm 09:10 PM

balatro这款游戏的默认语言是英语,但是玩家可以在Steam中设置语言为中文,有些玩家还不知道要怎么设置,下面就给大家带来balatro设置为中文的方法。balatro怎么设置中文1、首先打开Steam,点击库,找到balatro,右击选择属性。2、在属性界面中可以看到语言,点击进入语言设置界面。3、玩家可以将游戏的语言设置为简体中文,也可以设置成其他语言。4、之后玩家需要重启Steam,然后进入游戏就可以看到已经是中文了。以上就是balatro设置中文的方法,还是比较简单的,玩家可以去尝试

wwe2k24会有中文吗 wwe2k24会有中文吗 Mar 13, 2024 pm 04:40 PM

《WWE2K24》乃由VisualConcepts倾力打造的竞速体育游,已于2024年3月9日正式问世。此款游戏倍受赞誉,众多玩家热切关注其是否设有中文版。遗憾的是,迄今为止,《WWE2K24》尚未推出中文语言版本。wwe2k24会有中文吗答:目前不支持中文。WWE2K24在Steam国区的标准版售价为199元,豪华版为329元,纪念版为395元。该游戏的配置要求较高,无论处理器、显卡或运行内存等方面,均有一定标准。官方推荐配置以及最低配置介绍:

解决PHP写入txt文件中文乱码的技巧 解决PHP写入txt文件中文乱码的技巧 Mar 27, 2024 pm 01:18 PM

解决PHP写入txt文件中文乱码的技巧随着互联网的迅猛发展,PHP作为一种广泛应用的编程语言,被越来越多的开发者所使用。在PHP开发中,经常需要对文本文件进行读写操作,其中包括写入中文内容的txt文件。然而,由于编码格式的问题,有时候会导致写入的中文出现乱码。本文将介绍一些解决PHP写入txt文件中文乱码的技巧,并提供具体的代码示例。问题分析在PHP中,文本

See all articles