我有 javascript 文件,我需要将它们保存为 UTF-8(没有 BOM),每次我在 Notepad++ 中将它们转换为正确的格式时,当我在 Visual Studio 中打开它们时,它们都会恢复为带有 BOM 的 UTF-8。我怎样才能阻止 VS2010 这样做?
另一个问题,Visual Studio 中没有签名的 UTF-8 是否与没有 BOM 的 UTF-8 相同?
BOM 或字节顺序标记有时很烦人。除非您保存文件(如 Hans 所说),否则 Visual Studio 不会更改文件。
这是您问题的解决方案:如果您想使用其他编码保存文件,请选择另存为并扩展文件对话框中的保存按钮,然后选择“使用编码保存”。或者,如果您想永久摆脱此设置,只需打开文件菜单并选择“高级保存选项”,然后您应该选择“不带签名的 UTF-8”(这也回答了您的最后一个问题 :)。是的“没有签名的 UTF-8”与没有 BOM 的相同。
现在有图片。
转到文件-> 另存为。然后在 Save 按钮上单击三角形并单击 Save with Encoding...。单击 ok 以覆盖文件,然后从编码列表中找到 UTF-8 without signature -> 单击 OK。
希望这可以节省您一些时间。
我创建了阻止 Visual Studio 2010+ 将 BOM 添加到 UTF-8 文件的 Fix File Encoding 扩展。
不幸的是,这不适用于 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。然后,一旦您保存文件,它将被保存为没有 BOM 的 UTF-8。
charset
最近我发现了这个小型命令行工具,它可以在任意 UTF-8 编码文件上添加或删除 BOM:UTF BOM Utils(github 上的 new link)
小缺点,您只能下载纯 C++ 源代码。您必须创建 makefile(例如使用 CMake)并自行编译,此页面上不提供二进制文件。但是,对于软件开发人员来说,这不应该是任何问题。
对于 Visual Studio Code,请执行以下操作:
从右下角,选择当前编码 From options,选择 Save with enconding From options,选择 UTF-8
对于vs2010 c++,当源文件包含多字节字符(例如中文)时,没有BOM的UTF8会出现问题。
如果没有 BOM,这些字符将无法正确识别,并导致编译失败。
即使使用 Dave81 的解决方案,每次我保存该 html 文件时,Visual Studio 2015 社区仍然将我的文件恢复为 UTF8-BOM。
当我创建该 html 文件时,我右键单击该项目并选择“添加”,然后添加一个 HTML 文件。
默认情况下,Visual Studio 将在您的 HTML 文件中包含一个 <meta charset="utf-8" />
标记。
只需删除标签然后应用 Dave81 的解决方案,这一次问题就真正消失了。
似乎 Visual Studio 解析了您的 html 文件,当它看到该标记时,它会将文件转换为 UTF8-BOM,而不考虑原始文件格式(没有 BOM 的 UTF-8)。
我会直接在 Dave81 的解决方案下发表评论,但我没有足够的积分这样做......
建议没有 BOM 作为标准,但是,当使用多个字节,例如 [韩语或中文] 时,在 Visual Studio 中没有 BOM 时会显示警告消息。
实际上,我创建了一个韩文字符串数组,而对应的字符串数组在运行时被破坏了。
使用 Visual Studio 时,根据 MS 警告信息,建议使用 UTF -8 包括 BOM。 (使用多字节字符时)
要对 .csproj 文件执行高级保存,您必须首先通过右键单击项目并选择卸载项目来卸载项目。这将允许您使用不同的编码保存 .csproj 文件。
UTF8Encoding utf8EmitBOM = new UTF8Encoding(false);
StreamWriter sw = new StreamWriter(Path.Combine(sourcefilePath, fileName), false, utf8EmitBOM);
此代码将在没有 BOM 的情况下以 UTF-8 创建文件
不定期副业成功案例分享