QT5 +VS2010 SP1 解决中文乱码问题
2016-08-21 18:19
337 查看
QStringLiteral似乎解决解决显示中文的问题.所以不管是显示,还是使用QFile, QTextStream写入文件,在所有的文字前面都使用这个东西QStringLiteral就万无一失了。
qt4和VS2008的中文支持,大家都知道的。就不说了。
qt5.2.1发布后,源码全部是UTF-8编码,但由于微软的问题,VS2010打上补丁VS2010sp1,加入#pragma execution_character_set("utf-8")可以解决中文乱码问题。
可是VS2012又忘记了支持这段代码,qt5.2还会出现乱码。
所以为了用qt5.2只好选择VS2013了
版本选择:
1、qt-opensource-windows-x86-msvc2013_opengl-5.3.0-beta.exe
2、Visual Studio Add-in 1.2.3 Alpha for Qt5 (supports versions 2008, 2010, 2012 and 2013, does not work with the Express edition)
3、百度云:VS2013旗舰版,中英文版本都有。我是不熟悉VS2013,下载的是中文版。
安装VS2013,首先要运行go.bat,让IE假装是IE10,否则你还得更新,微软的更新速度,您是知道的。
![](http://hiphotos.baidu.com/exp/pic/item/fcbbb151f3deb48fdebfb475f21f3a292cf57803.jpg)
更改编码:
1、将main.cpp改成utf-8编码,方法是点击main.cpp,然后选择菜单文件->高级保存选项。【所有源码都要转换成uft-8】
2、在你的main函数里,设置如下代码,完美解决qt5的中文乱码
MSC_VER是MSVC编译器的内置宏,定义了编译器的版本。下面是一些编译器版本的_MSC_VER值
MS VC++ 10.0 _MSC_VER = 1600 【VC2010】
MS VC++ 9.0 _MSC_VER = 1500 【VC2008】
MS VC++ 8.0 _MSC_VER = 1400 【VC2005】
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100
#include "testchinese2.h"
#include <QtWidgets/QApplication>
#include <QDebug>
// 代码一定要是: UTF-8(BOM)
//qt版本高于等于qt5,VS版本高于或等于VS2010
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//qt版本低于qt5
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
//VS版本低于VS2010
#if defined(_MSC_VER) && (_MSC_VER < 1600)
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
#else
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
#endif
#endif
TestChinese2 w;
w.show();
qDebug() << "您好,333";
return a.exec();
}
qt4和VS2008的中文支持,大家都知道的。就不说了。
qt5.2.1发布后,源码全部是UTF-8编码,但由于微软的问题,VS2010打上补丁VS2010sp1,加入#pragma execution_character_set("utf-8")可以解决中文乱码问题。
可是VS2012又忘记了支持这段代码,qt5.2还会出现乱码。
所以为了用qt5.2只好选择VS2013了
版本选择:
1、qt-opensource-windows-x86-msvc2013_opengl-5.3.0-beta.exe
2、Visual Studio Add-in 1.2.3 Alpha for Qt5 (supports versions 2008, 2010, 2012 and 2013, does not work with the Express edition)
3、百度云:VS2013旗舰版,中英文版本都有。我是不熟悉VS2013,下载的是中文版。
安装VS2013,首先要运行go.bat,让IE假装是IE10,否则你还得更新,微软的更新速度,您是知道的。
![](http://hiphotos.baidu.com/exp/pic/item/fcbbb151f3deb48fdebfb475f21f3a292cf57803.jpg)
更改编码:
1、将main.cpp改成utf-8编码,方法是点击main.cpp,然后选择菜单文件->高级保存选项。【所有源码都要转换成uft-8】
2、在你的main函数里,设置如下代码,完美解决qt5的中文乱码
MSC_VER是MSVC编译器的内置宏,定义了编译器的版本。下面是一些编译器版本的_MSC_VER值
MS VC++ 10.0 _MSC_VER = 1600 【VC2010】
MS VC++ 9.0 _MSC_VER = 1500 【VC2008】
MS VC++ 8.0 _MSC_VER = 1400 【VC2005】
MS VC++ 7.1 _MSC_VER = 1310
MS VC++ 7.0 _MSC_VER = 1300
MS VC++ 6.0 _MSC_VER = 1200
MS VC++ 5.0 _MSC_VER = 1100
#include "testchinese2.h"
#include <QtWidgets/QApplication>
#include <QDebug>
// 代码一定要是: UTF-8(BOM)
//qt版本高于等于qt5,VS版本高于或等于VS2010
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//qt版本低于qt5
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
//VS版本低于VS2010
#if defined(_MSC_VER) && (_MSC_VER < 1600)
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
#else
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
#endif
#endif
TestChinese2 w;
w.show();
qDebug() << "您好,333";
return a.exec();
}
相关文章推荐
- QT5 +VS2010 SP1 解决中文乱码问题
- 完美解决QT->setText()中文乱码问题
- 解决QT中文字符串在osg中显示乱码的问题
- win7 64位系统使用VS2010生成时出现中文目录乱码问题的解决方法【转】
- Qt做发布版,解决声音和图片、中文字体乱码问题(转)
- Qt解决中文乱码问题
- Qt中文乱码问题解决办法【转】
- Qt做发布版,解决声音和图片、中文字体乱码问题
- Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决
- Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决(十八)下篇
- Cocos2d—X游戏开发之VS2010 控制台输出中文,模拟器中文乱码问题解决(十八)上篇
- qt 解决中文乱码问题
- 解决了QT网络编程中的中文乱码问题
- QT 解决中文处理乱码的问题
- Qt中文乱码问题解决办法
- Qt做发布版,解决声音和图片、中文字体乱码问题(转)
- win7 64位系统使用VS2010生成时出现中文目录乱码问题的解决方法
- 使用Qt Visual Studio Add-in 实现中文ts文件,解决中文乱码问题
- QT-解决中文显示乱码问题
- Qt解决中文乱码问题----记录