关于visual studio 2010:没有BOM的UTF-8

UTF-8 without BOM

我有一些javascript文件,我需要它们以utf-8格式保存(不带bom),每当我用notepad++将它们转换为正确的格式时,当我在Visual Studio中打开它们时,它们都会用bom恢复为utf-8格式。我怎样才能阻止VS2010这样做呢?

另一个问题是,在Visual Studio中不带签名的UTF-8是否与不带BOM的UTF-8相同?


BOM或字节顺序标记有时非常烦人。Visual Studio不会更改文件,除非您保存它(如Hans所说)。

下面是解决问题的方法:如果要用其他编码保存文件,请选择"另存为",并在"文件"对话框中扩展"保存"按钮,然后选择"用编码保存"。或者,如果要永久删除此设置,只需打开"文件"菜单并选择"高级保存选项",然后在其中选择"不带签名的UTF-8"(这也回答了最后一个问题:)。是的,"没有签名的UTF-8"与没有BOM相同。


我已经创建了修复文件编码扩展,它可以防止Visual Studio 2010+向UTF-8文件添加BOM。


现在有图片。

百万千克1去File->Save As。百万千克1

enter image description here

百万千克1然后在"保存"按钮上单击"三角形",然后单击"EDOCX1"(2)。百万千克1

氧化镁

百万千克1单击确定覆盖文件,然后从编码列表中找到UTF-8 Without signature->单击OK。百万千克1

氧化镁

希望这能节省你一些时间。


不幸的是,这不适用于csproj文件。没有"高级保存选项",即使已将CS文件设置为"不带签名的UTF-8",csproj文件仍与BOM一起保存。如果使用VSS,它仍然会抱怨项目文件。


utf-8-"另存为"(不带签名)默认值-请求包含不带签名的utf默认值

VS 2017 natively supports EditorConfig so a recommended solution
is to add .editorconfig file to your code base and set charset => utf-8.
Then once you save a file it will be saved as UTF-8 without BOM.


最近我发现了这个微小的命令行工具,它添加或删除任意UTF-8编码文件上的BOM:UTF BOM utils(Github的新链接)

小小的缺点,你可以只下载普通的C++源代码。您必须创建makefile(例如,使用cmake)并自己编译它,此页上不提供二进制文件。但是,对于软件开发人员来说,这不应该是任何问题。


对于VS2010 C++,当源文件包含多字节字符(例如中文)时,会出现UTF8不带BOM的问题。

如果没有BOM,这些字符将无法正确识别,并导致编译失败。


即使有了Dave81的解决方案,每次我保存HTML文件时,Visual Studio 2015社区仍然将我的文件还原为utf8-bom。

当我创建那个HTML文件时,我右键单击项目并选择"添加",然后添加一个HTML文件。

默认情况下,Visual Studio将在HTML文件中包含一个标记。

只需移除标签,然后应用Dave81的解决方案,这一次问题就消失了。

Visual Studio似乎解析了您的HTML文件,当它看到该标记时,它会将该文件转换为utf8-bom,而不考虑原始文件格式(utf8不带bom)。

**我本可以直接在Dave81的解决方案下发表评论,但我没有足够的观点来这样做……


对于Visual Studio代码,请执行以下操作:

百万千克1从右下角选择当前编码氧化镁百万千克1百万千克1从"选项"中,选择"带编码保存"氧化镁百万千克1百万千克1从选项中,选择UTF-8enter image description here。百万千克1