VS2013不支持无文件头的UTF8编码格式

作者:, 发表于

最近老遇到一个奇怪的问题。在VS 2013编译时,爆出很多警告:

warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

网上能找到一些方法禁止出现C4819的警告。但我这里还有一个事情是,随着警告还出现大量莫名其妙的错误,貌似VS 2013根本没有正确读取文本。

经过多次测试,我确定原因出现在我使用了utf-8 withou signature这种编码方式,如果改成gbkunicodeutf-8 with signature都不会出问题。那为什么会出现这个问题呢?vs 2013有一条设置auto detect encoding utf8 withou signature是自动勾选的,按道理应该没问题。可我这里就是不行。

现在还不知道怎么解决这个问题。要想保留utf8格式,只能加上文件签名,但这样会引发跨系统的移植问题。

后记:

把系统程序的语言改成英语(不是指界面),可以解决这个问题。但此时,程序将是UNICODE编码,需留意一下。更关键的是,系统里有些软件会变成乱码。所以一个方法是在编译时将系统程序语言变成英语,编译后再改回来。

Q.E.D.


上一篇:模版类继承需显示声明子类成员2016年5月5日
在gcc中,存在继承关系的模版类,子类无法直接访问父类的成员,即使该成员是protected或public。 一个简单的例子 #include <iostream> template <class

下一篇:GCC LD对依赖库的输入顺序敏感2016年6月5日
LD在链接生成目标文件时,会从左到有扫描输入的依赖库,当依赖库之间也有依赖关系时,必须将”依赖别人的库”放在“被别人依赖的库”的前面。


  • 支持使用微薄、微信和QQ的账户登陆进行评论。由各自网站直接认证,不会泄露你的密码。
  • 登陆后可选择分享评论到所绑定的社交网络,如微薄、人人和QQ空间。
  • 评论提交后无法修改。如需修改,请删除原评论再重新提交。
  • 评论支持LaTeX代码,行内公式请用\(a+b=c\),行间公式请用\[a+b=c\]。公式只支持英文字符。