QT使用msvc编译,中文乱码编译不过的解决方案

本文详细介绍了在使用QT5.13和VC2015进行开发时遇到的编码错误和中文乱码问题,并提供了解决方案。关键在于设置编译器参数,确保源文件和执行字符集为UTF-8。推荐在.pro文件中添加特定指令,无论源文件是否带有BOM,都能有效避免编码警告和错误。
摘要由CSDN通过智能技术生成

最近使用QT5.13+VC2015遇到编译错误,和中文乱码问题

实验过程:
1.如果编码是utf-8无bom,在pro中的添加的是
msvc:QMAKE_CXXFLAGS += -execution-charset:utf-8
msvc:QMAKE_CXXFLAGS += -source-charset:utf-8
则编译通过,且运行时中文正常

2.如果编码是utf-8+bom, 在pro中添加,
msvc:QMAKE_CXXFLAGS += -execution-charset:utf-8
在包含中文的源文件加#pragma execution_character_set(“utf-8”)
则编译能通过, 执行也无乱码
(采用的方案:中文的文件+bom,使用该指令)

综上所述:
在用vc编译器时对于没有bom头的utf-8文本编译出错,只要源文件中对字符串加utf8修饰是没用的(修饰符就是u8""形式),
网上有说在源文件加#pragma execution_character_set(“utf-8”)有用吗?
明显是没用的,编译都通不过,还怎么执行.

msvc:QMAKE_CXXFLAGS += -execution-charset:utf-8 这条是让程序执行时使用utf-8字符集
msvc:QMAKE_CXXFLAGS += -source-charset:utf-8 这条是告诉vc编译器识别源文件编码类型是utf-8
u8修饰符是让程序执行时使用utf-8字符集(显然这种方法只适合少量文本修改,不通用,兼容性差)

总结:
推荐在pro中添加以下3条指令,不管带不带bom都能解决常见的编码问题
即彻底解决C4819警告,C2001错误而不需要转换编码,不需要修改源码!!!

msvc:QMAKE_CXXFLAGS += -execution-charset:utf-8
msvc:QMAKE_CXXFLAGS += -source-charset:utf-8
QMAKE_CXXFLAGS_WARN_ON += -wd4819

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值