一个错误让我认识到了BOM

      和往常一样学习下qml相关的编程,为了方便调试,我更改了.qmlproject 文件中的mainfile 中的qml 名字,然后我重新添加qml文件的时候,软件突然的崩溃,卡死。突然间消失在我眼前,离开我的时候就这样悄然无息,好了不皮了,下面来看看那天都发生了啥。

     像往常一样我创建了一个简单的qml工程。

一个错误让我认识到了BOM 

 一个错误让我认识到了BOM

创建好的界面

一个错误让我认识到了BOM 

添加一个界面命名为one.qml 

一个错误让我认识到了BOM

一个错误让我认识到了BOM

 这样创造没有什么问题,这个时候修改test.qmlproject文中mainfile的数据:

  修改前:

一个错误让我认识到了BOM

修改后:

一个错误让我认识到了BOM 

这样运行程序也没有什么问题,会调用one.qml 文件。也不会报错。但是改变后会有警告信息。

一个错误让我认识到了BOM 

一个错误让我认识到了BOM

程序还是能够正常的运行的,接下来当我们再次创建一个qml文件的时候,

一个错误让我认识到了BOM

当我们点击下一步的时候:

 一个错误让我认识到了BOM

整个软件全部崩溃掉了,啊,为啥呀,我就简单的修改了下对应东西呀!当我从新打开我建立的工程发现,读取不到对应的qml了,而且文件已经建立了出来。

一个错误让我认识到了BOM 

   当时我就无语了,到底是咋的了,一个软件居然会这个样子,后来寻问了建波大佬,发现了这个文件保存了BOM格式,那这该如何解决呢?

   更改编码:

一个错误让我认识到了BOM

 

一个错误让我认识到了BOM

     这样就可以了。之前创建的就可以了。先在更改后,就不会出现这个问题了,我在什么时候添加了bom呢,而且BOM又是个什么东西呢 ,打开了工具-》选项-》

一个错误让我认识到了BOM

一个错误让我认识到了BOM

 在文本编辑器中,行为里面,utf-8 bom里面我默认成了编码是就添加了,导致我在更改时候给添加了,把这个选择第二个,目前存在则保留,就可以避免这个问题了。

一个错误让我认识到了BOM

 问题解决了,那啥是BOM呢,相信大家刚接触到这个的时候,有点迷惑,下面来看看把:

  BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。

一个错误让我认识到了BOM

     这里简单的讲述下,比如我们文件是UTF-8,我们采用BOM标识,别的软件打开这个发现前三个是 EF BB BF 三个字节数,就代编这个文件采用的是 UTF-8 的格式。比如我们创建一个带BOM的空文件,我使用了nodepad++创建的。

一个错误让我认识到了BOM

我们点击1.txt的属性,发现它保留了3个字节:

一个错误让我认识到了BOM

我们不采用bom保存的空文件是0字节的。那这3个不可见的字符就是 EF BB BF 字符,我们使用ue打开后就看到了:

一个错误让我认识到了BOM

   这就是我们在写qt时候pro文件做了bom保存,前面3个多了这个字节,在创建新的时候,读取时候qtcreate没有把前3个当成标识符号,在添加的时候出现问题导致了程序的卡死,当在打开这个工程的时候,就无法正确的看到工程中对应qml文件,导致出现工程中qml文件,还有其他文件都没有加载进来。

  同时bom比较常见的是 大小端了,为FE FF 开头是大端记录,FF FE是小端模式,这个让你去区别文件保存的方式,一般我们不使用,通常的windows ,linux,大部分是采用的小端记录数据,相关的知识点,请查相关内容。

  好了,就记录这里,观点不一定对,这只是我的观点,若你有新想法,可以在评论里面评论吧。一起加油!