Visual Studio 2017中源文件的默认编码是什么

视觉工作室2017似乎总是将新文件保存为UTF8-BOM。 它似乎与早期版本的visual studio不同,但我找不到任何文档。

还有一个选项“高级保存选项\编码”,它允许更改VS2017中缺少的新保存文件的编码。

问题:

  • 是否在VS2017中使用UTF8-BOM编码保存所有文件类型
  • 是否可以在VS2017中配置新文件的编码
  • VS2017会改变没有UTF8-BOM的“旧”文件的编码
  • 是否有关于此主题的任何文档

还有一个选项“高级保存选项\编码”,它允许更改VS2017中缺少的新保存文件的编码。

此function已存在! 您可以保存具有特定字符编码的文件以支持双向语言。 您还可以在打开文件时指定编码,以便Visual Studio正确显示文件。

使用编码保存文件

使用编码保存文件

  1. 从“ 文件”菜单中,选择“ 将文件另存为” ,然后单击“保存”按钮旁边的下拉按钮 。 将显示“高级保存选项”对话框。
  2. 在“编码”下,选择要用于文件的编码。
  3. (可选)在“行结束”下,选择行尾字符的格式。

是否在VS2017中使用UTF8-BOM编码保存所有文件类型

在我的例子中,VS使用CodePage 1252编码存储所有文件。

是否可以在VS2017中配置新文件的编码

但是,我的Visual Studio版本是15.6.1并且有些人在2017年的早期版本中遇到了与您相同的问题,但是他们说 “ 我们已经解决了这个问题,它可以在Visual Studio 2017 15.3中使用

如果不起作用 ,对于C ++项目请查看/ utf-8(将源和可执行字符集设置为UTF-8) 。

VS2017会改变没有UTF8-BOM的“旧”文件的编码

默认情况下,Visual Studio会检测字节顺序标记以确定源文件是否采用编码的Unicode格式,例如UTF-16或UTF-8。 如果未找到字节顺序标记,则假定使用当前用户代码页对源文件进行编码,除非您使用/ utf-8或/ source-charset选项指定了代码页。 有些人遇到了来自.editorconfig文件的问题,如下所示:

root = true [*] indent_style = tab indent_size = 4 tab_width = 4 trim_trailing_whitespace = true insert_final_newline = true charset = utf-8 

最后的charset线很可能会这样做……但我并不是要求’utf-8-with-bom’!

您可以将EditorConfig与charset属性一起使用,以在VS 2017中定义源文件的编码。

显然,由于不常用,“高级保存选项\编码”选项已从“文件”菜单中删除。 这就是Visual Studio Team成员给出的原因( 请参阅此内容 )。

该选项仍然存在,但您必须多做几次点击。

  1. 在菜单条中,转到文件 – >另存为
  2. 出现“保存文件”对话框时,“保存”按钮有一个向下箭头。 点击它。
  3. 选择保存编码…

在此处输入图像描述

一旦你将文件保存为某种格式(我相信你正在寻找的是Unicode (UTF-8 without signature) - Codepage 65001 ),理论上Visual Studio不应该随心所欲地改变它。

现在问题就在这里,一旦你删除了BOM,没有读者真的可以100%确定地知道给定的文本文件实际上是UTF-8。 这只是观察行为,但如果你去保存为编码…并选择
Unicode (UTF-8 without signature) - Codepage 65001 (没有BOM的UTF8),BOM将被删除…..但是,当你关闭文件并重新打开它时,再次转到高级保存选项,你将请注意,Visual Studio假定文本格式为CodePage 1252 。 该文件当然是完全有效的,因为它将每个可能的字节值映射到某个字符,但是在某些边缘情况下这可能会给你带来奇怪的结果。

它不会做的一件事就是重新添加BOM(至少我从未见过它)。 希望这可以帮助。

检查阻止Visual Studio 2017/2015/2013/2012将BOM添加到UTF-8文件的修复文件编码扩展。

通常,在Visual Studio中编辑UTF-8文件时,它会将字节顺序标记(BOM)序列0xEF,0xBB,0xBF添加到文件的开头。 有时它会混淆其他应用程序进一步处理文件。 您可以手动选择编码(文件 – 高级保存选项…或文件>另存为…>使用编码保存…),但每次重新打开文件时都需要这样做

此外,此扩展程序将回答您的大部分问题。

修复文件编码自动检测何时在Visual Studio中打开UTF-8文件,并将其编码设置为UTF-8而不签名。 如果您不编辑该文件,它将保持不变。 如果您编辑该文件,它将在没有BOM的情况下保存。

修复文件编码允许您根据文件路径和文件扩展名配置要编码的文件。 默认情况下,只有.htm和.html文件受Visual Studio保护。