首页 > 代码库 > VS2010中qDebug输出乱码的问题
VS2010中qDebug输出乱码的问题
1、开发环境:安装Qt5.3.2(离线安装包安装);VS版本为:2010 SP1Rel;源代码默认保存格式为GB2312。
2、输出乱码的代码
#include <QtCore/QCoreApplication>#include <QRegularExpression>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QString namePattern("人员状态表-(\\D+)-"); QRegularExpression re(namePattern); QString input("人员状态表-张三-20141107.xlsx"); QRegularExpressionMatch match = re.match(input); bool hasMatch = match.hasMatch(); if (hasMatch) { qDebug("input matched!"); QString name = match.captured(1); qDebug(name.toUtf8()); } else qDebug("warning:input unmatched!"); return 0;}
windows控制台输出:
input matched!????请按任意键继续. . .
3、修改代码
在文件头加上:
#if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endif
windows控制台输出:
input matched!张三请按任意键继续. . .
4、小结
- 在windows环境下开发简单qt程序时,不需要支持国际化,可以简单在源代码中直接使用中文字符。
- SP1版本的VS2010已经可以通过上述预处理程序将代码中的中文字符解析成UTF-8编码。
- Qt5内部将所有字符当作UTF-8编码进行处理(印象中看过的资料上说明,未考证)。
- VS编辑器中看到的中文字符的编码过程大致如下:
- 默认情况:GBK编码(VS编辑器中显示)->GBK编码(在内存中的编码,由VS编辑器转换,作为C++源码的一部分给编译器处理,包括词法分析、语法分析)->GBK编码(目标程序中的编码,由VS编译器生成)->GBK编码(运行时主程序使用,Qt部分代码将其作为UTF-8处理)->GBK编码(windows终端显示程序)。
- 修改后情况:GBK编码(VS编辑器中显示)->UTF编码(在内存中的编码,由VS编辑器转换,作为C++源码的一部分给编译器处理,包括词法分析、语法分析)->UTF编码(目标程序中的编码,由VS编译器生成)->UTF编码(运行时主程序使用,Qt部分代码将其作为UTF-8处理)->GBK 编码(windows终端显示程序)。
VS2010中qDebug输出乱码的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。