QT中文乱码,编码转换方案

常规套路

//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());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值