视觉工作室2017似乎总是将新文件保存为UTF8-BOM。 它似乎与早期版本的visual studio不同,但我找不到任何文档。
还有一个选项“高级保存选项\编码”,它允许更改VS2017中缺少的新保存文件的编码。
问题:
答案 0 :(得分:7)
您可以使用EditorConfig和charset属性来定义VS 2017中源文件的编码。
答案 1 :(得分:4)
还有一个选项"高级保存选项\编码"哪一个 确实允许更改丢失的新保存文件的编码 在VS2017中。
This feature已经存在!您可以保存具有特定字符编码的文件以支持双向语言。您还可以在打开文件时指定编码,以便Visual Studio正确显示文件。
是否在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)给出的原因。
该选项仍然存在,但您需要额外点击几次。
将文件保存为某种格式后(我相信您要查找的文件是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。