原来VS新建的源文件默认的编码是根据系统locale选择的。我的是国标2312.我草。可坑死我了。一直不知道。
当时主要是需要用doxygen生成html文档,它默认的输入文件的格式是UTF-8,是不带BOM的。我就用NotePad++全部把源文件转换成UTF-8带BOM编码格式的了。然后我又一次用VS打开项目,结果编译不过,报了
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
并且报了相关的奇怪错误。原因就是文件中有不可见的字符。(就是BOM头)。
分析下过程:
原来最原始的源文件是不带BOM头的。
后来用NotePad++ 转换成带BOM头的了。就是NotePad++ 上的UTF-8编码格式(它默认是带BOM的)
后来没转回去,使用的是带BOM的,VS的当前代码页不是带BOM的。所以直接就说有不可见的字符。所以就编译报错了。
所以。单击选择文件,在VS中的菜单栏中选择文件的高级保存选项,选择UTF-8带签名的代码页就行了。
references:
http://blog.csdn.net/enjoy517905407/article/details/37958035