QT与VS环境下代码文件编码格式使用utf-8与带BOM的utf-8的差异

本文探讨了UTF-8编码在QT和VS开发环境下的使用差异,特别是在处理中文字符时,是否包含BOM头对编译的影响。文章详细解释了BOM的概念,以及其在跨平台和Windows平台上的应用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT与VS环境下代码文件编码格式使用utf-8与带BOM的utf-8的差异

使用QT进行开发的时候,有时候通常会遇到使用中文的时候,就算格式为utf-8,也会出现编译错误的问题,一般无从下手,这几天看到同事有专门研究这个问题,于是也决心花一点时间这地搞懂utf-8的编码。其中分为utf-8utf-8 BOM分别在QTVS环境下的差异。

QT环境下有下面几个特点:

  1. 使用QT Creator 新建的文件,默认编码方式为无BOMutf-8
  2. 在没有中文的时候,utf-8utf-8 BOM都编译正常;
  3. 在有中文的时候,utf-8编译会报错,utf-8 BOM编译正常。

https://i-blog.csdnimg.cn/blog_migrate/55240aa7f08b467b0c972f438d9d569d.png

VS环境中:

  1. 在没有中文的时候,utf-8utf-8 BOM都可以编译通过;
  2. 在有中文的时候,utf-8编码,会编译报错,utf-8 BOM可以编译通过;
  3. 在有中文的时候,只要加上下面的代码,无论编码方式是什么,都可以编译通过。

#pragma execution_character_set("utf-8")

所以,我们平时是使用utf-8编码的时候,到底带不带BOM头呢?

那么我们首先了解一下什么是BOM

1.什么是BOM?

BOM(byte-order mark),既字节顺序标记。它是插入到 utf-8utf-16 utf-32unicode编码的文件开头的标记。用来识别unicode文件的编码类型。

它是存储在文件开头的,所以我们通常会叫BOM头。

也就是标准的utf-8是不带BOM的,在utf-8编码的文件中放置BOM头,主要是微软的习惯。

2.带BOM与不带BOM的区别?

BOM utf-8 与不带BOMutf-8的区别在于有没有BOM。就是在文件的最开头有没有U+FEFF,也就是说有没有这个标记。

3.带还是不带?

跨平台编译的情况一定不能带。

只在windows上编译的可有可无,如果带中文的,建议使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值