Qt5项目中msvc的编码设置

前言

经常使用Qt5的小伙伴,可能早就注意到了,明明在linux系统下正常使用的源代码,或者win下使用mingw的源代码,一旦源码中有汉字,就无法使用msvc编译器直接编译。

本小节讨论下此问题,并给出解决方案

原因:

linux系统或win系统下的mingw,载入源码中,默认使用的是utf-8编码。

而msvc默认使用的编码,是win系统默认编码。

win系统默认编码,是分地区的,中国大陆是GBK,台湾或香港等地区可能是BG5,其他国家和地区,一般都有自己的编码。所以中文编码,在其他地区会无法正确识别,导致msvc默认无法正常编译程序

解决方案

1.将源码编码修改为本地编码

方法很多,大部分编辑器都可以,只介绍一种,使用QtCreator

Edit-Select Encoding

选择正确的文件编码,并保存

优点:操作简单

缺点:

(1)若文件比较多,工作量比较大

(2)仍然无法做到到其他平台或编译器共享源码

2.将win操作系统的汉字编码修改为utf-8

在控制面板中修改

优点:一次操作即可让msvc识别utf-8

缺点:当前很多软件,仍然使用本地GBK编码,特别是几年前的程序,会造成这些程序显示乱码,无法正常使用

3.指定msvc使用utf-8编码

直接在项目文件中,指定源码编码为uft-8,控制台输出编码为utf-8

若是qmake项目文件,在项目中添加如下代码:

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

若是CMake项目文件,在项目中添加如下代码:

add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/source-charset:utf-8>")

add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/execution-charset:utf-8>")

优点:每个项目添加一次就可以,且不影响其他平台编译

缺点:每个项目都需要添加一次

后记

每种方法各有优劣,笔者个人推荐使用第三种解决方案

需要说明的是,qt6中已经通知msvc编译器使用utf-8编码了,就不需要配置了,所以建议小伙伴可以根据需要,尝试下qt6

笔者最近某些事并不是很顺心,为小伙伴们贡献一教程,希望对大家有所帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

꧁白杨树下꧂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值