如何使Visual Studio将所有文件保存为UTF-8而不在项目或解决方案级别签名?

时间:2011-03-24 11:42:15

标签: c++ visual-studio encoding

我正在尝试以一种可以在Linux中由gcc编译的方式配置VS c ++项目。似乎我需要将文件编码为UTF-8而不签名(这不是默认值)。是否可以在项目或解决方案级别设置某些内容,以便在有人打开解决方案并保存其更改后,文件仍为UTF-8?

请注意,这是一个开放项目,所以我不能要求每个人都改变他们的Visual Studio设置。

5 个答案:

答案 0 :(得分:17)

Visual Studio将通过转到另存为...并选择“使用编码保存...”并选择“无签名的UTF-8”来删除BOM。一旦没有BOM保存,VS将不再添加它。不幸的是,没有办法为VS中的所有文件设置此默认值,并且必须在每次首次保存文件时手动完成。

如果安装了Cygwin,您可以使用这个小脚本批量修改现有文件:

find . -name "*.cpp" -exec vim -c "set nobomb" -c wq! {} \;

或者,如果你没有Cygwin,但你有vim,你可以使用这个批处理脚本。

for %%f in (*.cpp) do call vim -c "set nobomb" -c wq! %%f

注意,在批处理脚本中执行此操作,似乎每次vim退出时都需要按[return],这与cygwin版本不同。

答案 1 :(得分:1)

vs2010中的

应该可以全局设置 - 请参阅: UTF-8 without BOM

只有和我一起表达对战,自然也没有这个。叹息。

答案 2 :(得分:0)

这似乎不是您可以放入propertyPage的设置。我能想到的最好的方法是创建一个简单的脚本(如在this link中),它作为预构建步骤运行并重写文件。只要脚本与项目保持一致,那就可能完成这项工作,但可能会非常烦人。

答案 3 :(得分:0)

Visual Studio似乎正在根据文件内容猜测字符编码。如果你在每个文件中放置一个标准的注释标题,并且该注释包含一个明确的UTF-8字符,VS应该做正确的事情。另一个好处是,某些Linux实用程序也会将该文件识别为明确的UTF-8。

答案 4 :(得分:0)

我这样做的方式:

  1. 写了一个小应用程序,使用记事本调用静默进程。简单地在shell中处理 (使用System.Diagnostics)
  2. 创建了一个文件和foreach文件列表,打开并保存为utf-8
  3. 花了20分钟写了1.并且执行了几分钟 我想不出手动打开和保存所有300个文件