UTF-8 无 BOM

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

还有一个问题,Visual Studio中没有签名的UTF-8和没有BOM的UTF-8是一样的吗?

106745 次浏览

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

下面是你问题的解决方案: 如果你想保存一个有其他编码的文件,选择另存为并扩展文件对话框中的保存按钮,然后选择“另存为编码”。或者如果你想永久地摆脱这个设置,只要打开文件菜单并选择“高级保存选项”。然后选择“UTF-8 without signature”;(这也回答了你的最后一个问题:)是“UTF-8无签名”;

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

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

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

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

最近我发现了这个微小的命令行工具,它可以添加或删除任意UTF-8编码文件上的BOM:

小缺点,你只能下载普通的c++源代码。你必须创建makefile(例如使用CMake)并自己编译它,本页不提供二进制文件。然而,对于软件开发人员来说,这应该不是什么问题。

现在是图片。

  1. File -> Save As

    File/Save As < / p >

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

    Save with Encoding < / p >

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

    UTF-8 Without signature . < / p >

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

即使有Dave81的解决方案,Visual Studio 2015社区仍然在每次保存html文件时将我的文件还原为UTF8-BOM。

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

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

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

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

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

UTF-8 - "另存为"(无签名)Default -请求包括默认的UTF无签名

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

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

  1. 从右下,选择当前编码 李enter image description here < / >
  2. 从选项中,选择保存与编码enter image description here < / >
  3. 从选项中选择UTF-8enter image description here < / >
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter  sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);

这段代码将创建没有BOM的UTF-8文件

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

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

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

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