我有一些需要将它们保存为UTF-8(不包含BOM)的javascript文件,每次我在Notepad ++中将它们转换为正确的格式时,当我在Visual Studio中打开它们时,它们都将恢复为带有BOM的UTF-8。如何阻止VS2010这样做?
另一个问题,在Visual Studio中没有签名的UTF-8是否与没有BOM的UTF-8相同?
我有一些需要将它们保存为UTF-8(不包含BOM)的javascript文件,每次我在Notepad ++中将它们转换为正确的格式时,当我在Visual Studio中打开它们时,它们都将恢复为带有BOM的UTF-8。如何阻止VS2010这样做?
另一个问题,在Visual Studio中没有签名的UTF-8是否与没有BOM的UTF-8相同?
Answers:
BOM或字节顺序标记有时很烦人。除非您保存文件,否则Visual Studio不会更改文件(如汉斯所说)。
这是您问题的解决方案: 如果要使用其他编码保存文件,请选择另存为,然后在文件对话框中扩展保存按钮,然后选择“使用编码保存”。或者,如果您想永久摆脱此设置,只需打开“文件”菜单,然后选择“高级保存选项”,然后在此处选择“不带签名的UTF-8”(这也回答了您的最后一个问题:)。是的“没有签名的UTF-8”与没有BOM的相同。
现在带有图片。
转到File
-> Save As
。
然后在保存按钮上单击三角形,然后单击确定Save with Encoding...
。
单击确定以覆盖文件,然后从编码列表中查找UTF-8 Without signature
->单击OK
。
希望这可以节省您一些时间。
不幸的是,这不适用于csproj文件。没有css文件的“高级保存选项”,即使您将其设置为“不带签名的UTF-8”,csproj文件仍然与BOM保存在一起。如果使用VSS,它仍然会抱怨项目文件。
UTF-8-“另存为”(不带签名)默认值-请求为不带签名的UTF包括默认值
VS 2017本机支持EditorConfig,因此建议的解决方案是将
.editorconfig
文件添加到代码库并进行设置charset => utf-8
。然后,一旦您保存文件,它将被保存为UTF-8(不带BOM)。
charset
.editorconfiggithub.com/ editorconfig/editorconfig
最近,我发现了这个小巧的命令行工具,该工具可在任意UTF-8编码文件上添加或删除BOM:UTF BOM Utils(github上的新链接)
几乎没有什么缺点,您只能下载纯C ++源代码。您必须创建makefile(例如,使用CMake)并自己进行编译,此页面上未提供二进制文件。但是,对于软件开发人员来说,这应该不是什么问题。
即使有了Dave81的解决方案,Visual Studio 2015社区仍然每次保存该html文件时都将我的文件还原为UTF8-BOM。
创建该html文件时,右键单击该项目并选择“添加”,然后添加一个HTML文件。
默认情况下,Visual Studio将包含一个 <meta charset="utf-8" />
在HTML文件中标记。
只需删除标签,然后应用Dave81的解决方案,这个问题就可以立即消除。
似乎Visual Studio会解析您的html文件,并且当看到该标记时,它将文件转换为UTF8-BOM,而无需考虑原始文件格式(不带BOM的UTF-8)。
我本来可以直接在Dave81的解决方案下发表评论,但我没有足够的意见来做...
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);
此代码将在不带BOM的UTF-8中创建文件