[解决方法]C++ : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符


前言

由于没有使用任何IDE敲代码,所以就自己下载了个编译器,用Notepad++来写,可以看我上一篇博文


1.问题描述

源码里面是带有中文的,所以编译的时候出来了下面的提示 :

warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失


2.解决方法

Notepad++转为 UTF8-BOM 编码即可
UTF8-BOM 编码


3.相关问题分析(UTF-8 BOM的缺点)

UTF-8 不需要 BOM,尽管 Unicode 标准允许在 UTF-8 中使用 BOM。

所以不含 BOM 的 UTF-8 才是标准形式,在 UTF-8 文件中放置 BOM 主要是微软的习惯(顺便提一下:把带有 BOM 的小端序 UTF-16 称作「Unicode」而又不详细说明,这也是微软的习惯)。

BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开,但这样的文件在 Windows 之外的操作系统里会带来问题。

「UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。

这里有更详细的解释


enjoy it~

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐