当前位置: 代码迷 >> QT开发 >> Qt5.2和VS2012中文乱码的有关问题
  详细解决方案

Qt5.2和VS2012中文乱码的有关问题

热度:87   发布时间:2016-04-25 03:22:53.0
Qt5.2和VS2012中文乱码的问题
本帖最后由 qimo601 于 2014-04-03 11:28:00 编辑

我的开发环境是qt5.2.1+VS2012
请教各位:
1、为啥我在qDebug() << "您好,朋友。333"; 输出来的结果都是:??????????333 
就我目前知道,因为visual stdio对编码UTF-8支持不好。

2、以前qt4+VS2008是通过下面方法解决

QTextCodec *codec = QTextCodec::codecForName("gbk");
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);


3、现在Qt5放弃了上面的方法,网上都建议用:
首先将VC里的源代码都保存成UTF-8格式

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


可是我的VS2012编译后还是出现乱码?请教各位有解决方法吗?
------解决方案--------------------
知道这回事就行了

1. MVSC的utf8源码字符集, 需要一个BOM,这个BOM最早是windows的记事本引入的。尽管现在主流的编译器可以接受它,未来如何还是不好说。
2. MVSC的utf8执行字符集,需要一个特定的#pragma,这个MSVC自创的东西,它自身合适放弃,都不是我们可控的。

题外:
QtCore的维护者Thiago Macieira现在正在对QString::fromUtf8中的这个BOM问题发愁。感兴趣的话,可以搜 [Development] utf-8 BOM and parsers
  相关解决方案