qt5.3+vs2013乱码

解决qt5.3+vs2013乱码,在main函数之前加入

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif 

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

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

//You can write a simple example like this  

#include <QApplication>
#include <QLabel>  

  #if _MSC_VER >= 1600
  #pragma execution_character_set("utf-8")
  #endif  

  int main(int argc, char *argv[])
  {
      QApplication a(argc, argv);
      QLabel label("???ó??ń??");
      label.show();  

      return a.exec();
  }  

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

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

// Coding: UTF-8(BOM)
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
# pragma execution_character_set("utf-8")
#endif  

#include <QApplication>
#include <QTextCodec>
#include <QLabel>  

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);  

   #if QT_VERSION < QT_VERSION_CHECK(5,0,0)
        #if defined(_MSC_VER) && (_MSC_VER < 1600)
                QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030-0"));
        #else
                QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
        #endif
   #endif  

    QLabel *label = new QLabel(QObject::tr("你好!"));
    label->show();  

    return app.exec();
}  

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

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

来自:http://blog.163.com/[email protected]/blog/static/1582209320143115334438/

qt5.3+vs2013乱码

时间: 2024-11-11 02:36:06

qt5.3+vs2013乱码的相关文章

VS2013+QT5.3 中文乱码问题 解决方案

网上很多关于QT中文乱码的问题及答案,但情况不同解决方法也不一样. 本方案适用于VS2013+QT5.3环境(编译器是VC) using namespace std; # pragma execution_character_set("utf-8") //文件的开头要声明字符编码UTF-8,这样输出中文字符串就能显示正常.qDebug() << " 连接交易前置...成功" ; 直接输出字符串是没问题了,但遇到char*[]这样的字符数组的时候显示中文还

QT5 中的乱码问题

1. 一般同意编码方式,就不会产生乱码.统一为utf-8. 2. QT5采用QStringLiteral(""):这种方式来处理字面常量的编码问题,不能处理变量,不能处理数组和容器. 3. QString::fromLocal8Bit("柱身"); 4. 看网上的例子,大都是QT4中的方法,不适用与QT5没有一个成功的. 5. 最好的解决方法是采用国际化,英文翻译.

Qt5(VS2013平台开发)应用程序的发布

当你用 VS2013 + Qt5 + VS addin开发一个 Qt 的应用程序之后,如何将此程序交给别人来使用呢?本文即描述这个问题. 第一步: 需要准备好VS2013 运行时的 dll,一共 5个文件如果你是VS2013,则在这个目录(C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\x86\Microsoft.VC120.CRT)下找以下这3个文件: 然后在目录C:\Program Files (x86)\Micro

QT5.3+VS2013+QCustomPlot+QwtPlot使用环境配置

VS安装QT后运行环境所需配置 安装好QT和QT在VS下的插件之后: 1.打开VS,找到QT5→QT Option,如下: 2.配置电脑环境变量,在系统变量→Path下增加QT的动态库所在文件夹,也就是bin文件夹路径: QT使用QCustomplot库 官网下载:http://www.qcustomplot.com/ 直接下载QCustomplot,然后把.h文件和.cpp文件添加到工程即可. QT使用QwtPlot库 官网下载:http://qwt.sourceforge.net/ 打开VS

windows 下QT5.5+vs2013开发环境搭建

开发环境搭建: 1.下载QT,下载的网址如下: http://download.qt.io/official_releases/vsaddin/ http://download.qt.io/official_releases/qt/5.5/5.5.0/qt-opensource-windows-x86-msvc2013-5.5.0.exe http://download.qt.io/official_releases/qtcreator/3.6/3.6.1/ vs2013下载: ed2k://|

QT5.4 vs2013静态编译之加载静态插件sqlite

1. 很多同学在静态编译QT5完成后, sqlite的驱动老是加载不进去, 原因可能是因为你没有如下操作: #include <QtPlugin> Q_IMPORT_PLUGIN(QSQLiteDriverPlugin) 记得是 QSQLiteDriverPlugin 而不是 qsqlite 当然你在编译的时候的configure 要把插件编进去-plugin-sql-sqlite

QT5关于中文乱码,以及出现C2001错误解决方法

以前用各种方法都试了,都不行,今天发现用QStringLiteral这个宏把字符串扩起来,如QStringLiteral("中文"), QTreeWidgetItem *root_1 = new QTreeWidgetItem(tree, QStringList(QStringLiteral("主件"))); 前提是utf-8编码,但是注意,qt默认的utf-8不带bom的,如果用QStringLieral发现编译不能通过,那么就是你的utf-8编码问题.QT5设置

QT5.4 vs2013静态加载插件的sqlite静态编译

1. 非常多同学在静态编译QT5完毕后, sqlite的驱动老是载入不进去, 原因可能是由于你没有例如以下操作: #include <QtPlugin> Q_IMPORT_PLUGIN(QSQLiteDriverPlugin) 记得是 QSQLiteDriverPlugin 而不是 qsqlite 当然你在编译的时候的configure 要把插件编进去-plugin-sql-sqlite

QT5在VS2013中找不到QtNetwork或QTcpSocket或QTcpSocket等头文件

一.首先是要有相关的库文件 方法一:手动添加库文件Qt5Networkd.lib 对项目进行右键,找到相关的属性,然后查看Linker中input部分的红色选项中是否含有Qt5Networkd.lib 如果没有,则必须添加Qt5Networkd.lib,直接通过键盘写入即可. 方法二:在建立项目时,添加Network选项即可   二.然后在程序中加入相应的头文件     在程序中,如果想一劳永逸,就写#include <QtNetwork/QtNetwork>,里面就包含了QTcpServer