QT 中文乱码

在QT中,输出中文出现乱码,比如使用QString或者tr()均出现乱码。

微软VC编译器源代码使用GB2312编码进行保存。" 我是汉字 " 是C语言中的字符串,它是char型的窄字符串。保存成带BOM的UTF-8,用微软cl编译器时,汉字本身是UTF-8编码,但程序内保存时却是对应的GBK编码。QString 内部采用的是Unicode。当你需要从窄字符串 char* 转成Unicode的QString字符串的,你需要告诉QString你的这串char* 中究竟是什么编码?设置QString默认采用的编码。而究竟采用哪一个,一般来说就是源代码是GBK,就用GBK,源代码是UTF-8就用UTF-8。

解决办法:【注意:选用一种方法即可,不要同时使用多种防止中文乱码的方法】
1)预处理,根据设置的本地字符集转换,能正确转换含有中文的QString。
#pragma execution_character_set(“utf-8”)
//在要加中文的cpp或h文件加入该预处理,设置本地字符集转换,VC编译器把字符串常量按照UTF-8编码
2)fromLocal8Bit() 可以把中文转为Unicode
如:QString::fromLocal8Bit(“我是中文字符”);
3)QStringLiteral() 也可以使用
如:QStringLiteral(“我是中文字符”);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值