vs utf-8 无bom 编译失败

vs的编译器对Unicode源代码支持,如下:

1. UTF-16 little endian with or without byte order mark (BOM)

2. UTF-16 big endian with or without BOM

3. UTF-8 with BOM

并没有UTF-8,所以源码是UTF-8无BOM的情况下一般VS会给如下warning:

warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。

VS在UTF-8文件编译时,如果出现以中文结尾的一行注释,那么这个换行符很可能会被丢掉,导致下一行代码被注释。但并不是所有的中文注释都出错,也许和字符的编码值有关。

因此就会出现“改了行注释代码就执行错了”的诡异bug或者“改了下注释代码就执行对了”的诡异“解决方案”。

解决

为什么会用UTF-8,因为我们用Qt,Qt推荐的编码格式是UTF-8,但我们又是使用的MSBuild编译,所以经常遇到这种冲突。

工程编译中增加 /utf-8 编译选项,这样可以避免UTF-8中文的问题。

或者改成UTF-8 with BOM,不要被BOM的编译问题困扰太久。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sendinn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值