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

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

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

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

在VS环境中:

  1. 在没有中文的时候,utf-8与utf-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-8、utf-16、 utf-32、unicode编码的文件开头的标记。用来识别unicode文件的编码类型。

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

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

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

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

3.带还是不带?

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

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

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

  1. Win32环境下代码注入与API钩子的实现

    Win32环境下代码注入与API钩子的实现 本文详细的介绍了在Visual Studio(以下简称VS)下实现API钩子的编程方法,阅读本文需要基础:有操作系统的基本知识(进程管理,内存管理),会在V ...

  2. QT在linux环境下读取和设置系统时间

    QT在linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...

  3. QT在VS环境下双击*.ui打不开Qt designer(Qt设计师)的解决方法

    今天刚学QT,并在VS2013环境下完成了QT5.6.2的配置. 在VS下,新建Qt GUI Application后,在解决方案资源管理器中双击 *.ui 文件没反应, 网上的解决方法很少,但找到有 ...

  4. 文件夹恢复后java运行慢,eclipse中每次重新启动服务,运行环境下的文件夹或者文件被还原...

    手动在tomcat运行环境修改了文件,但是每次在eclipse中重启tomcat的时候,总是会把eclipse中的文件更新到tomcat,类似还原,包括上传文件到服务器运行目录,重启的时候,会把上传的 ...

  5. Mac下转换文件编码格式

    Win下文件默认使用GBK编码,而Mac下是UTF-8,难免遇到乱码的情况,可以通过终端iconv命令解决. 单个文件转码 // iconv -f 原编码格式 -t 新编码格式 原路径 > 新路 ...

  6. mac下CSV文件编码格式查看与转换

    mac 安装brew ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/insta ...

  7. 开发环境下PP文件的创建

    开发环境下Provisioning Profile文件的创建. 当我们在做iOS开发的时候,总是添加很多证书,来保证安全性.Provisioning Profile我们又称PP文件.这个文件将证书.A ...

  8. Oracle rac环境下数据文件误建在本地目录的处理过程

    错误描述   Mon Nov 16 19:02:38 2015 Errors in file /u01/app/oracle/diag/rdbms/zwzwdb/zwzwdb1/trace/zwzwd ...

  9. UBuntu16.04中文语言环境下 把文件夹中文名字改为英文

    使用Ubuntu16.04时候,由于中文环境下,把Home的文件夹名字都默认为中文的, 然而,在使用终端操作的时候,英文更加方便,所以需要改为英文,操作如下: export LANG=en_US xd ...

最新文章

  1. C++深拷贝与浅拷贝
  2. Web 服务器 之 简易WWW服务器的架设
  3. 36氪研究 | 智慧零售行业研究报告
  4. 云巴创始人张虎:一个优秀的软件工程师必然是全栈工程师
  5. SAP Fiori Elements - how is read only field implemented in UI
  6. wpf mvvm MenuItem的Command事件
  7. Idea导入web工程,并运行
  8. JupyterLab显示pyecharts图像
  9. 函数 注释规范_C++掌握标准编码规范,摘掉初级“码农”帽子!
  10. 【数据结构排序算法系列】数据结构八大排序算法
  11. 如何成为一名AI人工智能算法工程师?
  12. SolidWorks Simulation热仿真优化设计 提高企业生产效率
  13. Java中面向接口编程的简单案例(电脑、鼠标、键盘、USB接口)
  14. uni-app 微信/头条小程序/手机号登陆
  15. 华为笔记本换装linux双系统,华为及荣耀笔记本装Deepin双系统不能引导Windows的解决...
  16. 网易设计师:交互设计要承担的8大工作职能
  17. [arch Linux IDEA] 搭配MariaDB的JDBC
  18. 什么轴的机械键盘声音小
  19. 2:为什么要读写分离
  20. win10或win7计算机右键管理打不开

热门文章

  1. Git基本介绍(三大分区及核心内部构造)
  2. MySql实现sequence功能的代码
  3. 视频流PS,PS封装H264
  4. VMware下Linux配置局域网和外网访问(CentOS)
  5. 命令行运行命令时报错You don#39;t have write permissions for the /Library/***
  6. volume image
  7. IList,ICollection,IEnumerable,IEnumerator,IQueryable
  8. 【C】malloc(0)问题
  9. jsp网站使用ffmpeg实现为.flv格式视频截图
  10. 7.10.8107.79 小心80180048