在使用Visual Studio生成程序时,出现如下警告: warning C4819:The file contains a character that cannot be represented in the current codepage (936). Save the file in Unicode format to prevent data loss(该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失) 由于不影响程序的生成,当初并未在意。后来为了让编译无警告,查了下造成该警告的原因: 报警原因: 警告主体是一个文件,其内容中包含了代码页(936)中没有的字符。也就是说,这个字符使用的编码在GBK编码中未定义。 需要注意的是,该警告与代码本身无关,出现问题的位置多见于Boost等非中文程序库源代码的注释中。
警告影响: 在调试程序时,程序无法停在断点处。 解决方案: 解决办法有两个,一是另存文件,可以快速消除警告。二是修改相关字符,适合非法字符少的情况。 一、解决方案一: 1、在Visual Studio打开引起报警的文件。 2、选择菜单FILE(文件)->Advanced Save Options(高级保存选项)。 3、选择“Unicode(UTF-8 with signature(带签名))-Codepage(代码页)65001”或者“Unicode-Codepage(代码页)1200”后确定,即可。 也可以使用其它编辑器进行类似的编码转换,甚至记事本另存一下就可以解决。 二、解决方案二: 1、在Visual Studio打开引起报警的文件。 2、使用快捷键Ctrl+Shift+F或选择菜单EDIT(编辑)->Find and Replace(查找和替换) ->Find in Files(在文件中查找)。 3、在Find what(查找内容)中输入正则表达式“[^\x00-\x7F]”,并勾选Find options(查找选项)中的Use Regular Expressions(使用正则表达式)来查找非法字符。 4、修改或去掉所有非法字符。 不过如果文件中存在汉字,会干扰查找的结果,所以这个方法比较适合处理非中文的源代码。 使用有正则表达式查找功能的其它编辑器也可以进行类似的工作。
VC++ warning C4819 的解决方法
最新推荐文章于 2024-05-23 15:03:00 发布