源文件编码问题

       用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。

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值