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

时间:2018-04-03 06:38:58

标签: c# visual-studio-2017

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

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

问题:

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

5 个答案:

答案 0 :(得分:7)

您可以使用EditorConfigcharset属性来定义VS 2017中源文件的编码。

答案 1 :(得分:4)

  

还有一个选项"高级保存选项\编码"哪一个   确实允许更改丢失的新保存文件的编码   在VS2017中。

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

save a file with encoding

保存带编码的文件

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

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

    就我而言,VS使用 CodePage 1252 编码存储所有文件。

      

    是否可以在VS2017

    中配置新文件的编码

    但是,我的Visual Studio版本是15.6.1并且有些人在2017年的早期版本中遇到了与您相同的问题,但是they said" 我们已经解决了这个问题并且它已经解决了这个问题。 ;可在Visual Studio 2017 15.3 "

    中使用

    如果不能正常工作,对于C ++项目请查看/utf-8 (Set Source and Executable character sets to UTF-8)

      

    VS2017会改变" old"的编码没有的文件   UTF8-BOM

    默认情况下,Visual Studio会检测字节顺序标记,以确定源文件是否采用编码的Unicode格式,例如UTF-16或UTF-8。如果未找到字节顺序标记,则假定使用当前用户代码页对源文件进行编码,除非您使用/ utf-8或/ source-charset选项指定了代码页。 Some people encountered a problem来自 .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'!

答案 2 :(得分:3)

显然,由于不常用,“高级保存选项\编码”选项已从“文件”菜单中删除。这就是Visual Studio团队成员(see this)给出的原因。

该选项仍然存在,但您需要额外点击几次。

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

    将文件保存为某种格式后(我相信您要查找的文件是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(至少我从未见过它)。希望这会有所帮助。

答案 3 :(得分:1)

检查阻止Visual Studio 2017/2015/2013/2012将BOM添加到UTF-8文件的Fix File Encoding扩展名。

  

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

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

  

修复文件编码会自动检测何时打开UTF-8文件   Visual Studio并将其编码设置为UTF-8而不签名。如果你   不要编辑文件,它仍然是未修改的。如果你编辑文件,它   将在没有BOM的情况下保存。

     

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

答案 4 :(得分:1)

不幸的是,这只是对Nik的回答的评论,因此,我使用了另一个答案:

  • VS保存所有源代码文件(.cpp,.cs,.h等)和Web文件 (.htm(l)、. css,.xml)在带有BOM的UTF-8中(在MS中带有签名) 行话)。

  • 但是,VS将VS创建的文本文件保存在 本地设置,例如西欧的代码页1252 文化。 VS足够聪明,可以检测无法在 默认代码页,并会提示您以UTF-8编码。视觉效果 Studio会自动保存为UTF-8,当然,您还可以使用BOM 选中“当无法将数据保存到时将文档另存为Unicode” 对话框中的“工具/选项/环境/文档”。

  • 您可以使用“保存”来覆盖每个文件的编码 为”,但是您不能覆盖VS选项中的默认编码

  • 但是,您可以使用EditorConfig文件覆盖默认设置。 怎么样: https://docs.microsoft.com/en-us/visualstudio/ide/create-portable-custom-editor-options?view=vs-2019