我的开发环境是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