if (note.title == QString::fromLocal8Bit("欢迎使用和笔记"))突然报错,排查到后面发现文件变成了utf-8编码,将文件改为uft-8 BOM编码后无报错。特记录一下
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2429 语言功能 "if/switch 中的 init-statement" 需要编译器标志 "/std:c++17" note
"带 BOM 的 UTF-8" 和 "无 BOM 的 UTF-8" 是指在 UTF-8 编码中是否包含字节顺序标记(Byte Order Mark,BOM)。BOM 是一个特殊的字符序列,用于标识文本数据的字节顺序,它包含一个或多个字节,通常位于文本文件的开头。
-
带 BOM 的 UTF-8:
- 带 BOM 的 UTF-8 文件在文件开头包含一个特殊的字节序列,用于标识文件是以 UTF-8 编码格式存储的。
- UTF-8 BOM 的字节序列是
0xEF,0xBB,0xBF。 - 带 BOM 的 UTF-8 文件用于指示文本编辑器和其他软件读取文件时应该以 UTF-8 编码格式解释内容,并确定正确的字节顺序。
- 在某些情况下,带 BOM 的 UTF-8 文件可能会导致一些软件或系统不正确地解释文件内容,特别是对于不支持 BOM 的软件或系统。
-
无 BOM 的 UTF-8:
- 无 BOM 的 UTF-8 文件没有在文件开头包含任何特殊的字节序列。
- UTF-8 编码本身没有字节序的概念,因此对于大多数情况来说,无 BOM 的 UTF-8 文件与带 BOM 的 UTF-8 文件是等效的。
- 无 BOM 的 UTF-8 文件可能更适用于一些对 BOM 敏感的系统或软件,例如一些老旧的文本处理工具或特定的操作系统环境。
总的来说,对于新的文本文件,带 BOM 的 UTF-8 格式可以提供更好的兼容性,特别是在涉及跨平台和跨软件的情况下,而无 BOM 的 UTF-8 则更适合于某些特殊的环境和需求。
博客记录了Qt开发中遇到的问题,代码因文件编码从原编码变为UTF - 8而报错,改为UTF - 8 BOM编码后正常。同时介绍了带BOM和无BOM的UTF - 8编码的区别及适用场景,指出新文本文件用带BOM的UTF - 8兼容性更好。
3216





