解决QT 代码和变量中文乱码的问题

一、代码里中文乱码

代码里的中文字符串,例如:

    QString str_test="看看会不会乱码123!!!";

QT在windows上一般用MSVC编译,但是MSVC文本编码采用GB2312或GBK编码,所以可能出现乱码,可以在.c和.h文件开头添加如下代码,明确告诉MSVC字符串是utf-8的编码

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

同时,源文件也要确定保存成带BOM的UTF-8编码,修改选项后,.c和.h随便改动下再保存,就能变成成UTF-8的文件了。

最后测试一下,看看有没有问题。

二、串口、tcp收发中文乱码

在实际开发中,需要读写设备,例如串口、Socket等等,这时又会有中文乱码的问题,因为windows系统是GB2312或GBK编码,而QString是unicode编码,所以发送和接收的时候要多一步,toLocal8Bit()或fromLocal8Bit()进行编码转换。

以Socket为例:

//TCPSocket发送    
QString data = ui->txt_server_send->toPlainText();//获取文本框字符串
QByteArray ba= data.toLocal8Bit();//转成本地编码
tcpsocket->write(ba);//发送

//TCPSocket接收
QByteArray ba = tcpsocket->readAll();//获取客户端发来的数据
QString data=QString::fromLocal8Bit(ba);//从本地编码转成Unicode
ui->textEditRead->append(data);//显示到文本框

串口也是同理。

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哀歌与世无争

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值