常规套路
//1、main函数前面加宏
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
//2、main函数里面指定编码
QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
//3、针对字符串操作
QStringLiteral(“字符串”);//返回一个QString的实例
QString QString::fromLocal8Bit(const char *str, int size = -1);
QString QString::fromLocal8Bit(const QByteArray &str);
指定编码
常规套路无效时,可以尝试指定字符串的编码,此方法在QT调用外部程序时很有效,比如cmd命令行、打印机驱动等。
//1、从外部程序获取字符串,转换编码,在Qt程序里显示中文
char cOutVersion[100];
//获取版本信息
iRet = GetDriverVersion(cOutVersion);//调用外部接口获取字符串
//强制转换编码,显示中文
QTextCodec *gbk= QTextCodec::codecForName("GBK");
QString t_cOutVersion = gbk->toUnicode(cOutVersion);//获取的字符串可以显示中文
//2、Qt输出字符串到外部程序,在外部程序显示中文
QString str_printInfo = "CB532测试打印信息";
//当前文件是utf-8编码,打印机接口是GBK编码,需要转换
QTextCodec *gbk = QTextCodec::codecForName("gbk");
QByteArray array_printInfo = gbk->fromUnicode(str_printInfo);
//调用外部接口,打印支持中文显示
PrintLine(array_printInfo.data());