我有javascript文件,我需要它们以UTF-8(没有BOM)保存,每当我在Notepad ++中将它们转换为正确的格式时,当我在Visual Studio中打开它们时,它们将恢复为带有BOM的UTF-8。我怎样才能阻止VS2010这样做呢?
另一个问题是,Visual Studio中没有签名的UTF-8与没有BOM的UTF-8相同吗?
BOM或字节顺序标记有时非常烦人。 Visual Studio不会更改文件,除非您保存它(如汉斯所说)。
以下是您的问题的解决方案:如果您想要使用其他编码保存文件,请选择另存为并在文件对话框中扩展保存按钮,然后选择“使用编码保存”。或者,如果您想要永久删除此设置,只需打开文件菜单并选择“高级保存选项”,您应该选择“没有签名的UTF-8”(这也回答了您的上一个问题:)。是“没有签名的UTF-8”与没有BOM的情况相同。
我创建了Fix File Encoding扩展,阻止Visual Studio 2010+将BOM添加到UTF-8文件。
现在有了图片。
File
- > Save As
。Save with Encoding..
”。UTF-8 Without signature
- >单击OK
。希望这能为您节省一些时间。
不幸的是,这不适用于csproj文件。没有“高级保存选项”,即使您已为cs文件将其设置为“无签名的UTF-8”,csproj文件仍会保存为BOM。如果您使用VSS,它仍会抱怨项目文件。
UTF-8 - "Save As" (Without Signature) Default - Request to include Default for UTF Without Signature
VS 2017本身支持EditorConfig所以建议的解决方案是将
.editorconfig
文件添加到您的代码库并设置charset => utf-8
。然后,一旦保存文件,它将保存为UTF-8而不含BOM。
对于vs2010 c ++,当源文件包含多字节字符(例如中文)时,没有BOM的UTF8会出现问题。
没有BOM,将无法正确识别这些字符,导致编译失败。
最近我发现这个小命令行工具在任意UTF-8编码文件上添加或删除BOM:UTF BOM Utils(github上的new link)
没什么缺点,你只能下载普通的C ++源代码。您必须创建makefile(例如,使用CMake)并自行编译,此页面不提供二进制文件。但是,对于软件开发人员来说,这不应该是任何问题。
即使使用Dave81的解决方案,Visual Studio 2015社区仍然在每次保存该html文件时将我的文件恢复为UTF8-BOM。
当我创建该html文件时,我右键单击该项目并选择“添加”,然后添加了一个HTML文件。
默认情况下,Visual Studio将在HTML文件中包含<meta charset =“utf-8”/>标记。
只需删除标签然后应用Dave81的解决方案就可以解决这个问题。
似乎Visual Studio会解析您的html文件,当它看到该标记时,它会将文件转换为UTF8-BOM,而不考虑原始文件格式(没有BOM的UTF8)。
**我会直接在Dave81的解决方案下发表评论,但我没有足够的分数来做到这一点......