源文件编码问题

来源:互联网 发布:水仙花数c语言程序100_ 编辑:程序博客网 时间:2024/04/27 18:08

       用VS2008编译C++源文件时总是出现如下警告 Warning C4819:The file contains a character that can ot be represented in the current code page(936). save the file in unicode format to prevent data loss.

    虽然也知道这没什么,但是心里还是极度的不爽,其他的模块都没有提示类似的警告,为什么只有自己的模块会出现这样的警告呢?到网上搜寻了一些解决办法,用的最普遍的是找出出现这个警告错误的源文件,打开它, 用VS2008的查找替换功能,打开允许正则表达式选项,选择当前窗口,查找替换 /n 为 /n ,  然后,这个世界就清净了。可是我的世界并没有就此清净,警告还是警告,因为VS2008自带的文本编辑器提示找不到/n。

    后来一个失误,把/n不小心输入\n,然后选择全部替换,在VS2008编辑器里看到的源代码在视觉上没有任何的改变,保存后重新编译。然后问题来了,出现了许多奇怪的错误。更奇怪的是编译器提示的错误行号总比我看到的实际错误行号小1,有点纳闷,感觉应该是自己把源文件中隐藏的换行符都变成正则表达式的\n,把源文件拷贝到windows自带的文本编辑器中,果然只有超长的一行。那会儿并不知道该如何把它们转换回来,后来看了公司代码库其他的源文件保存格式,自己保存的源文件编码格式与其他的源文件编码格式是不一致的。选择高级保存选项,将文件编码格式由Unicode(UTF-8无签名)-代码页65001变换成简体中文(GB2312)-代码页936,然后把行尾重新设置为Windows(CR LF)后,一切恢复正常了,编译通过, 也没有再次提示Warning C4819。

    问题解决了,但是自己并不是很能理解,在此做一下记录,以后有时间再来深究。

 

原创粉丝点击