如何在Visual Studio中设置标准编码


Answers:


64

您是否因为使用的特殊字符会以ASCII编码丢失而将文件另存为UTF-8?如果是这样,则在中存在一个VS2008全局设置Tools > Options > Environment > Documents,名为Save documents as Unicode when data cannot be saved in codepage。启用此功能后,如果某些字符无法在其他默认代码页中表示,则VS2008将另存为Unicode。

另外,哪些文件没有保存为UTF-8?默认情况下,我的所有.cs,.csproj,.sln,.config,.as * x等都保存为UTF-8(带有签名,字节顺序标记)。


2
感谢您的设置提示。我在xaml文件中遇到此问题,导致在编译过程中出错
surfen 2012年

嗨,您知道为什么报表设计器将编码属性更改为utf-8吗? stackoverflow.com/questions/30071846/...
Mohammadreza

2
还是没有更好的解决方案?我的VS2015会在每次崩溃后不断重置代码页,而用电经常会发生,非常可悲,微软是如何来到这里的,他们如何制作最好的IDE并忘记默认的代码页设置,真可惜((
Movsar Bekaev

2
设置Unicode时,它实际上使用的是UTF-8还是UTF-16?
宾基

9
问题是数据可以保存在默认系统代码页中。但是其他软件不能总是读取我系统代码页中的源代码。因此,我寻求默认情况下强制VS将所有文本文件保存为UTF-8的方法。我不知道为什么有人要在UTF-8以外的代码页中保存文本数据。
BlackOverlord

19

什么

使用EditorConfig可以实现。

EditorConfig帮助开发人员在不同的编辑器和IDE之间定义和维护一致的编码样式。

这也包括文件编码。

默认情况下,EditorConfig是内置的Visual Studio 2017,并且我有适用于VS2012的版本的插件。从EditorConfig Visual Studio插件页中阅读更多内容。

怎么样

您可以在文件夹结构中设置一个足够高的EditorConfig配置文件,以覆盖所有预期的存储库(如果文件确实分散在各处,则可以达到驱动器根目录)并配置设置charset

charset:设置为latin1,utf-8,utf-8-bom,utf-16be或utf-16le来控制字符集。

如果希望更好地控制,可以在每个文件夹级别或按文件名/类型添加过滤器和例外等。

配置完成后,兼容的IDE应自动执行操作,以使匹配文件符合设置规则。请注意,在IDE中使用文件(打开并保存)时,Visual Studio不会自动转换所有文件,但是会自动转换位。

接下来是什么

虽然您可以在Visual Studio范围内进行设置,但我强烈建议您仍在解决方案版本控件中包含一个EditorConfig根目录,以便将明确的设置也自动同步到所有团队成员。如果某些项目尚未设置自己的editorconfig文件,则驱动器根目录editorconfig文件可以作为后备。


4

我使用Windows7。

控制面板-区域和语言-管理-非Unicode程序的语言。

在将“更改系统区域设置”设置为英语(美国)之后。我将vs2010的默认编码更改为Windows-1252。是gb2312以前

在将新.cpp文件签入TFS后,我为C ++项目创建了一个新文件,该文件的属性页中的编码显示为Windows-1252。


在Windows 10中,有一个带有标签“测试版:使用Unicode UTF-8支持世界语言”的复选框。当我检查它时,我可以在Visual Studio 2019上打开使用Windows-1252编码的文件。但是我只能找到此配置,因为这个答案。谢谢!
Gean Ribeiro

1

我不知道全局设置,但是您可以尝试以下方法:

  1. 将所有Visual Studio模板保存在UTF-8中
  2. 编写一个Visual Studio宏/插件,它将侦听DocumentSaved事件,并将文件以UTF-8格式保存(如果尚未保存)。
  3. 在源控件上放置一个代理,以确保新文件始终为UTF-8。

2
3.可能不是一个好主意,因为一旦您签入文件,它将确定您的文件与签入的文件不匹配。好吧,至少要颠覆。如果可以对检查和签入进行编码,那么这将不是问题。
塔穆斯·罗伊斯(TamusJRoyce)

嗨,您知道为什么报表设计器将编码属性更改为utf-8吗? stackoverflow.com/questions/30071846/...
Mohammadreza
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.