如何在Visual Studio 2010中设置默认编码

13

我们使用Visual Studio 2010专业版来开发和维护公司的ASP电子商务网站(经典ASP,不是ASP.NET),每次创建新页面时我都会遇到文件编码问题。

我们网站中的每个页面都保存为Windows-1252格式。但是,当我创建一个新页面(或随机修改现有页面)时,Visual Studio会将该页面保存为UTF-8编码,这就导致了扩展字符或#includes错误(因为所包含的文件是以Windows-1252格式保存的,而包含该文件的页面是UTF-8格式,因此在显示时所包含的内容会出现问题)。

我尝试到处搜索,但唯一找到的解决方案就是“手动使用“文件”→“另存为”→“使用编码保存”,但这样做很麻烦,每次都要这样做(而且我肯定会有时忘记这样做)。

我已经尝试取消“环境”→“文档”设置中的“当数据无法保存在代码页中时,将文档保存为Unicode”的选项,但没有效果。

难道我真的只能手动处理吗?


我冒昧地将“ANSI”从中删除了。Windows-1252没有ANSI标准。 - R. Martinho Fernandes
4个回答

13

非常晚才回答,但我自己也遇到了这个问题,这是谷歌上的第一个搜索结果,所以如果有其他人想知道,我会在这里记录下来。 :)

在Visual Studio中,新文件的默认编码取决于该文件类型的模板。

例如,JavaScript文件模板位于C:\Program Files (x86)\Microsoft Visual Studio 10.0\Web\WebNewFileItems\JScript.js(在我的计算机上)。 如果您编辑该文件并以您选择的编码保存它,则使用VS创建的所有新JavaScript文件将具有该编码。

因此,您可以独立设置每种文件类型的编码。


有趣的解决方案。现在我只需要找到它保存纯文本文件模板的位置... - Albireo
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Items :) - Lars-Erik
很奇怪它不像VS2003一样将模板存储在一个地方。我想知道C++模板在哪里。 - Swift - Friday Pie

1

我不知道在VS中是否有更改默认编码的设置(尽管我非常怀疑)。但是,您可以很容易地编写一个小插件,为您提供“另存为1252”命令,然后将其映射到任何您喜欢的菜单中。


这可以是一个解决方法,但不是最好的(而且我对创建Visual Studio插件一窍不通)。如果没有其他可行的选择,我会尝试使用这个。是时候进行一些搜索引擎查找了... - Albireo
我会在这里观察,看是否有人找到更好的解决方案。 - TToni
1
这是一个防止VS向UTF-8编码的文件添加BOM的插件示例:https://vlasovstudio.com/fix-file-encoding/ - feetwet

0

Lars-Erik的回答可以解决问题。

只需添加一些信息:

  • 对于那些想要更改MFC文件默认编码的人,这里是模板:

...\Microsoft Visual Studio 10.0\VC\VCWizards\CodeWiz\MFC\Simple\Templates\LANG_CODE

LANG_CODE是您的VS 2010语言(1033:en-us,2052:zh-cn等)

  • 在我的情况下,VS的语言是en-us,MFC模板文件都是用英语编写的(仅ASCII字符),没有UTF8 BOM,这意味着它们可以被解释为UTF8文件或我的操作系统代码页(cp932)中的文件。这些模板创建的文件默认情况下以cp932而不是Unicode处理,因此我必须向这些模板添加BOM,以使VS 2010明确地将文件保存为UTF8(也带有BOM)。

-2

找不到它,但内置的解决方法是:文件 > 另存为 > 然后在保存按钮旁边,有一个向下箭头,提供“使用编码保存”的选项

我选择US ASCII,因为我在所有文档中都得到了BOM,一旦发布。


3
如果你仔细阅读整个问题,你会发现提问者已经在做你建议的事情了。提示:通常来说,花费一点时间仔细阅读可以避免你修复本可以避免的错误,从而为你自己的发展节省更多的时间。 ;) - Disillusioned

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接