原因:
1. 文件源码为utf-8 no bom.
2. 默认情况下,Visual Studio 会检测字节顺序标记,以确定源文件是否为编码的 Unicode 格式,,例如 UTF-16 或 UTF-8 . 如果未找到字节顺序标记,则假定使用当前用户代码页对源文件进行编码
3. 在windows中文环境下进行编译, 未指定文件字符编码, 所以默认为GB2312(即code page 936)
(注: 源码采用utf8 without bom保存时,编译器用GB2312编码解析文件, 一旦存在中文, 就会导致文件中文部分解析错误,进而可能引发编译错误, 即使编译通过也会有潜在的风险.)
解决办法:
1. 给文件加上bom.(不推荐)
2. 为MSCV编译器指明字符编码为utf-8
在 Visual Studio 开发环境中设置编译器
打开项目“属性页” 对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
选择 "配置属性" " > c/c + + > 命令行" 属性页。
在 " 其他选项" 中,添加
/utf