QT与VS环境下代码文件编码格式使用utf-8与带BOM的utf-8的差异
QT与VS环境下代码文件编码格式使用utf-8与带BOM的utf-8的差异
使用QT进行开发的时候,有时候通常会遇到使用中文的时候,就算格式为utf-8,也会出现编译错误的问题,一般无从下手,这几天看到同事有专门研究这个问题,于是也决心花一点时间这地搞懂utf-8的编码。其中分为utf-8与utf-8 BOM分别在QT与VS环境下的差异。
在QT环境下有下面几个特点:
- 使用QT Creator 新建的文件,默认编码方式为无BOM的utf-8;
- 在没有中文的时候,utf-8与utf-8 BOM都编译正常;
- 在有中文的时候,utf-8编译会报错,utf-8 BOM编译正常。
在VS环境中:
- 在没有中文的时候,utf-8与utf-8 BOM都可以编译通过;
- 在有中文的时候,utf-8编码,会编译报错,utf-8 BOM可以编译通过;
- 在有中文的时候,只要加上下面的代码,无论编码方式是什么,都可以编译通过。
#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的差异相关推荐
- Win32环境下代码注入与API钩子的实现
Win32环境下代码注入与API钩子的实现 本文详细的介绍了在Visual Studio(以下简称VS)下实现API钩子的编程方法,阅读本文需要基础:有操作系统的基本知识(进程管理,内存管理),会在V ...
- QT在linux环境下读取和设置系统时间
QT在linux环境下读取和设置系统时间 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:Fedora12 开发软件:QT 读取系统时间 ...
- QT在VS环境下双击*.ui打不开Qt designer(Qt设计师)的解决方法
今天刚学QT,并在VS2013环境下完成了QT5.6.2的配置. 在VS下,新建Qt GUI Application后,在解决方案资源管理器中双击 *.ui 文件没反应, 网上的解决方法很少,但找到有 ...
- 文件夹恢复后java运行慢,eclipse中每次重新启动服务,运行环境下的文件夹或者文件被还原...
手动在tomcat运行环境修改了文件,但是每次在eclipse中重启tomcat的时候,总是会把eclipse中的文件更新到tomcat,类似还原,包括上传文件到服务器运行目录,重启的时候,会把上传的 ...
- Mac下转换文件编码格式
Win下文件默认使用GBK编码,而Mac下是UTF-8,难免遇到乱码的情况,可以通过终端iconv命令解决. 单个文件转码 // iconv -f 原编码格式 -t 新编码格式 原路径 > 新路 ...
- mac下CSV文件编码格式查看与转换
mac 安装brew ruby -e"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/insta ...
- 开发环境下PP文件的创建
开发环境下Provisioning Profile文件的创建. 当我们在做iOS开发的时候,总是添加很多证书,来保证安全性.Provisioning Profile我们又称PP文件.这个文件将证书.A ...
- Oracle rac环境下数据文件误建在本地目录的处理过程
错误描述 Mon Nov 16 19:02:38 2015 Errors in file /u01/app/oracle/diag/rdbms/zwzwdb/zwzwdb1/trace/zwzwd ...
- UBuntu16.04中文语言环境下 把文件夹中文名字改为英文
使用Ubuntu16.04时候,由于中文环境下,把Home的文件夹名字都默认为中文的, 然而,在使用终端操作的时候,英文更加方便,所以需要改为英文,操作如下: export LANG=en_US xd ...
最新文章
- C++深拷贝与浅拷贝
- Web 服务器 之 简易WWW服务器的架设
- 36氪研究 | 智慧零售行业研究报告
- 云巴创始人张虎:一个优秀的软件工程师必然是全栈工程师
- SAP Fiori Elements - how is read only field implemented in UI
- wpf mvvm MenuItem的Command事件
- Idea导入web工程,并运行
- JupyterLab显示pyecharts图像
- 函数 注释规范_C++掌握标准编码规范,摘掉初级“码农”帽子!
- 【数据结构排序算法系列】数据结构八大排序算法
- 如何成为一名AI人工智能算法工程师?
- SolidWorks Simulation热仿真优化设计 提高企业生产效率
- Java中面向接口编程的简单案例(电脑、鼠标、键盘、USB接口)
- uni-app 微信/头条小程序/手机号登陆
- 华为笔记本换装linux双系统,华为及荣耀笔记本装Deepin双系统不能引导Windows的解决...
- 网易设计师:交互设计要承担的8大工作职能
- [arch Linux IDEA] 搭配MariaDB的JDBC
- 什么轴的机械键盘声音小
- 2:为什么要读写分离
- win10或win7计算机右键管理打不开
热门文章
- Git基本介绍(三大分区及核心内部构造)
- MySql实现sequence功能的代码
- 视频流PS,PS封装H264
- VMware下Linux配置局域网和外网访问(CentOS)
- 命令行运行命令时报错You don#39;t have write permissions for the /Library/***
- volume image
- IList,ICollection,IEnumerable,IEnumerator,IQueryable
- 【C】malloc(0)问题
- jsp网站使用ffmpeg实现为.flv格式视频截图
- 7.10.8107.79 小心80180048