如何使Visual Studio将所有文件保存为UTF-8,而不在项目或解决方案级别进行签名? 我试图用一个可以在GLinux中编译GCC的方式来配置VS C++项目。似乎我需要将文件编码为UTF-8而不带签名(这不是默认值)。是否可以在项目或解决方案级别设置一些内容,以便在有人打开解决方案并保存其更改后,文件仍然是UTF-8
请注意,这是一个开放项目,所以我不能要求每个人都更改他们的Visual Studio设置。这似乎不是一个可以放入propertyPage的设置。我能想到的最好办法是创建一个简单的脚本(如中所示),作为预构建步骤运行并重新写入文件。只要脚本保留在项目中,这可能就可以完成任务,但可能会非常烦人。Visual Studio将通过“另存为”删除BOM表。。。选择“编码保存…”并选择“不带签名的UTF-8”。一旦在没有BOM表的情况下保存,VS将不会再次添加它。不幸的是,没有办法为VS中的所有文件设置此默认值,必须在每次首次保存文件时手动执行 如果已安装Cygwin,则可以使用以下小脚本批量修改现有文件:如何使Visual Studio将所有文件保存为UTF-8,而不在项目或解决方案级别进行签名? 我试图用一个可以在GLinux中编译GCC的方式来配置VS C++项目。似乎我需要将文件编码为UTF-8而不带签名(这不是默认值)。是否可以在项目或解决方案级别设置一些内容,以便在有人打开解决方案并保存其更改后,文件仍然是UTF-8,c++,visual-studio,encoding,C++,Visual Studio,Encoding,请注意,这是一个开放项目,所以我不能要求每个人都更改他们的Visual Studio设置。这似乎不是一个可以放入propertyPage的设置。我能想到的最好办法是创建一个简单的脚本(如中所示),作为预构建步骤运行并重新写入文件。只要脚本保留在项目中,这可能就可以完成任务,但可能会非常烦人。Visual Studio将通过“另存为”删除BOM表。。。选择“编码保存…”并选择“不带签名的UTF-8”。一旦在没有BOM表的情况下保存,VS将不会再次添加它。不幸的是,没有办法为VS中的所有文件设置此默
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版本不同。在vs2010中可以全局设置-请参阅:
我在mo只有vs express,当然没有这个。唉。似乎Visual Studio正在根据文件内容猜测字符编码。如果在每个文件中放置一个标准的注释头,并让该注释包含一个明确的UTF-8字符,那么VS应该做正确的事情。另一个好处是,一些Linux实用程序也会将文件识别为明确的UTF-8。我这样做的方式:
我想不起手动打开和保存所有300个文件我假设这是一个cr/lf vs cr问题,如果是这样,另一种方法可能是更改您的Linux makefile,使其成为构建的一部分的源文件。。。或者您可以重新配置源代码管理以提取适当的行尾。cr/lf vs cr很好,它是文件的实际编码(即文件中的前两个字节,然后是每秒钟一个字节-因为它似乎是utf-16)。我在Linux中尝试了第一个,得到了
find:missing argument to
-exec'`第二个(同样在Linux中)给出错误:bash:$i:dimensional redirect
是的,不要做第二个(我现在从帖子中删除了它)。我从未真正尝试过它,我只是在其他地方看到它,它看起来不错。我错过了第一个上的\;
(我以前在这个问题上使用过),现在已修复。如果VS能够记住它曾经在没有BOM表的情况下保存过该文件,则它必须将信息存储在某个位置。打开一个文件,用编码保存它,关闭VS,然后查看文件的修改时间。其中一个文件应该已更新,您可以在其中查看文件是如何标记的。@标记,VS不记得了任何关于它如何保存文件的信息(至少我不知道)。它只是不会更改现有文件的编码(因此脚本会在VS之外批量修改编码)。最好共享你的应用程序代码,为那些正在寻找解决方案的人节省20分钟。