193

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

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

4

12 回答 12

246

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

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

于 2011-03-23T20:53:44.347 回答
38

现在有图片。

  1. 转到File-> Save As

    文件/另存为

  2. 然后在保存按钮上单击三角形并单击Save with Encoding...

    使用编码保存

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

    UTF-8 无签名

希望这可以节省您一些时间。

于 2015-07-21T08:34:49.383 回答
27

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

于 2012-11-26T14:18:35.017 回答
6

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

于 2011-08-30T13:17:31.183 回答
6

UTF-8 - “另存为”(无签名)默认值 - 请求为无签名的 UTF 包含默认值

VS 2017 原生支持EditorConfig,因此推荐的解决方案是将.editorconfig文件添加到您的代码库并设置charset => utf-8. 然后,一旦您保存文件,它将被保存为没有 BOM 的 UTF-8。

于 2018-08-06T23:21:28.667 回答
4

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

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

于 2015-01-31T21:20:18.213 回答
4

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

  1. 从右下角,选择当前编码 在此处输入图像描述
  2. 从选项中,选择Save with end 在此处输入图像描述
  3. 从选项中,选择UTF-8 在此处输入图像描述
于 2019-02-14T20:13:25.153 回答
3

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

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

于 2012-08-02T19:44:32.460 回答
1

要对 .csproj 文件执行高级保存,您必须首先通过右键单击项目并选择卸载项目来卸载项目。这将允许您使用不同的编码保存 .csproj 文件。

于 2021-07-14T15:32:44.517 回答
1

即使使用 Dave81 的解决方案,每次我保存该 html 文件时,Visual Studio 2015 社区仍然将我的文件恢复为 UTF8-BOM。

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

默认情况下,Visual Studio 将<meta charset="utf-8" />在您的 HTML 文件中包含一个标记。

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

似乎 Visual Studio 解析了您的 html 文件,当它看到该标记时,它会将文件转换为 UTF8-BOM,而不考虑原始文件格式(没有 BOM 的 UTF-8)。

我会直接在 Dave81 的解决方案下发表评论,但我没有足够的积分这样做......

于 2016-09-21T14:15:48.410 回答
1

建议没有 BOM 作为标准,但是,当使用多个字节,例如 [韩语或中文] 时,在 Visual Studio 中没有 BOM 时会显示警告消息。

实际上,我创建了一个韩文字符串数组,而对应的字符串数组在运行时被破坏了。

使用 Visual Studio 时,根据 MS 警告信息,建议使用 UTF -8 包括 BOM。(使用多字节字符时)

于 2020-12-03T05:12:56.240 回答
-2
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter  sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);

此代码将在没有 BOM 的情况下以 UTF-8 创建文件

于 2019-10-09T15:18:50.047 回答