QT的中文乱码及字符集编码格式问题

1、QT控件的相关函数,使用QString格式的数据是可以正常显示的,例如下面示例,而前提是用正确的函数把括号里的“你好”转换成QString类型。

ui->lineEdit->setText(QString::fromUtf8("你好"))
QString str=QString::fromLocal8Bit("你好");
setWindowTitle(str);

2、 “你好”的编码格式与local字符集编码格式一致,Windows系统默认的local编码格式是GBK,Ubuntu默认是utf-8(注:我自己是windows,在头文件里加上

#pragma execution_character_set("utf-8") 可以将其编译为utf-8格式,处理时就要当做utf-8格式对待。

3、两个函数的含义:
①、因为我的windows默认local是GBK,所以QString::fromLocal8Bit("你好")是将“你好”当做GBK格式转为QString的Unicode类型,不在头文件插入#pragma execution_character_set("utf-8")时确实是GBK格式,所以不会乱码。但插入之后需要视作utf-8,这种情况下会出现乱码。
②、QString::fromUtf8("你好")则无视local编码类型,直接视作utf-8格式进行转换,当其格式确为utf-8时,使用正常无乱码。

4、利用如下代码可以将local编码格式转换为utf-8,使用时需要引用头文件QTextCodec。改变local编码格式后,使用fromLocal8Bit和toLocal8Bit这样的函数需要谨慎判断,但不影响fromUtf8和toUtf8的使用。

QTextCodec *codec = QTextCodec::codecForName("UTF-8");//或者"GBK",不分大小写
QTextCodec::setCodecForLocale(codec);

5、(以我的Qt5.12.0为例)使用MSVC编译器时,在头文件加入

# pragma execution_character_set("utf-8")

总是没问题的,如若出现中文乱码,只需检查函数的选用是否正确。

6、利用Qt写串口项目时,若需对收到的字符串信息进行处理(比如转换成QString类型时),字符串的编码类型由发送端决定。

7、Qt Creator里工具->选项->文本编辑器->行为->文件编码中的设置,不仅会影响打开文件时的显示格式,在这个设置下进行文件修改保存,也会将源文件的编码格式修改为相同设置。

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

新入坑的码农

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

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

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

打赏作者

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

抵扣说明:

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

余额充值