Qt UTF-8和UTF-8(BOM)

1.为什么建议把代码文件改为UTF-8?

Windows 中文环境默认是 GBK/GB2312,而 Linux、macOS 默认是 UTF-8。如果代码文件是 GBK 编码,拿到 Linux 上编译或查看,中文注释、字符串会变成乱码;反之亦然。UTF-8 是唯一在三大主流操作系统上都原生支持且默认的编码,统一用它就能消除平台差异。

2.UTF-8 "带 BOM"和"不带 BOM"两种的区别?

UTF-8 有"带 BOM"和"不带 BOM"两种。带 BOM(Byte Order Mark) 的 UTF-8文件开头有EF BB BF 三个字节,而不带 BOM的文件直接是内容,无额外字节。

3.UTF-8 "带 BOM"的作用?

旧版 MSVC 没有 /utf-8 选项时,只能靠 BOM 判断源码是 UTF-8。新版 MSVC 已支持 /utf-8 编译选项,加上后就不再依赖 BOM,可以放心使用无 BOM 的 UTF-8。

Linux 兼容性:GCC/Clang 默认按 UTF-8 解析源码,通常能正确忽略 BOM 头,因此带 BOM 的源码在 Linux 上一般也能正常构建。

4.最终实践

为保证在Windows、Linux上能构建成功并且正常显示中文,应确保所有".h"文件、​".cpp"文件使用带BOM的UTF-8格式保存。如果使用 MSVC,建议同时在 .pro 中加上QMAKE_CXXFLAGS += /utf-8 作为双保险,这样即使未来有文件漏了 BOM 也能正确编译。Qt自身的文件(如".pro"".pri"".qrc"等)应使用普通的UTF-8格式(不带BOM)保存,否则会导致编译错误。

QtCreator设置如下:

【工具】->【选项】

查看或修改文件是否是UTF-8或者UTF-8(BOM),用记事本打开文件,选择另存为即可

图1:

图2:

5.注意

创建完源代码文件后,在文件中输入源代码后保存即可。请务必输入一些代码,否则直接保存空文件可能会导致文件变为GB 2312编码。

相关推荐
ShineWinsu1 小时前
对于Qt:QProgressBar常见属性的解析
开发语言·c++·qt·进度条·gui·定时器·qprogressbar
fanruitian1 小时前
python 机器学习 交叉验证train_test_split 网格搜索GridSearchCV
开发语言·python·机器学习
AlanAshley1 小时前
无 SIM 卡也能打 110?手机紧急呼叫能力的软硬件技术探究
开发语言·智能手机·php
ShineWinsu1 小时前
对于Qt:QLCDNumber常见属性以及QTimer的解析
服务器·数据库·c++·qt·gui·qtimer·qlcdnumber
modelmd1 小时前
Go 切片、映射常见使用场景
开发语言·后端·golang
dialect_9 小时前
KMP算法
开发语言·c++·算法
总要学点什么10 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
听风吹等浪起11 小时前
第26章:ViT+InceptionDW+FocalLoss改进|CT骨折影像二分类完整Pytorch实现(含PyQt5推理GUI)
pytorch·qt·分类
ShineWinsu11 小时前
对于Qt:QRadioButton常见属性以及QButtonGroup的解析
数据库·c++·qt·microsoft·gui·qradiobutton·qbuttongroup