没有BOM的UTF-8

问题描述 投票:167回答:9

我有javascript文件,我需要它们以UTF-8(没有BOM)保存,每当我在Notepad ++中将它们转换为正确的格式时,当我在Visual Studio中打开它们时,它们将恢复为带有BOM的UTF-8。我怎样才能阻止VS2010这样做呢?

另一个问题是,Visual Studio中没有签名的UTF-8与没有BOM的UTF-8相同吗?

visual-studio-2010 visual-studio byte-order-mark
9个回答
215
投票

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

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


25
投票

我创建了Fix File Encoding扩展,阻止Visual Studio 2010+将BOM添加到UTF-8文件。


24
投票

现在有了图片。

  1. File - > Save As

  1. 然后在“保存”按钮上单击三角形,然后单击“Save with Encoding..”。

  1. 单击确定覆盖该文件,然后从编码列表中找到UTF-8 Without signature - >单击OK

希望这能为您节省一些时间。


6
投票

不幸的是,这不适用于csproj文件。没有“高级保存选项”,即使您已为cs文件将其设置为“无签名的UTF-8”,csproj文件仍会保存为BOM。如果您使用VSS,它仍会抱怨项目文件。


4
投票

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。


2
投票

对于vs2010 c ++,当源文件包含多字节字符(例如中文)时,没有BOM的UTF8会出现问题。

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


2
投票

最近我发现这个小命令行工具在任意UTF-8编码文件上添加或删除BOM:UTF BOM Utils(github上的new link

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


1
投票

即使使用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的解决方案下发表评论,但我没有足够的分数来做到这一点......


1
投票

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

  1. 从右下角,选择当前编码enter image description here
  2. 表单选项,选择保存编码qazxsw poi
  3. 从选项中,选择UTF-8 enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.