强制Visual Studio(2010)将所有文件保存为UTF-8

19

有没有办法强制Visual Studio(2010)始终将所有文件保存为UTF-8编码?


这可以通过EditorConfig实现,使用charset = utf-8,请参见https://dev59.com/vW035IYBdhLWcg3wc_wm#51716830。 - Dave Anderson
3个回答

26

我不知道有什么方法可以强制将所有内容保存为UTF-8格式,但您可以逐个选择来实现。当您首次保存文档并出现“另存为”对话框时,保存按钮实际上将是一个下拉按钮,其中有两个选项。您要选择“使用编码保存...”,然后它会呈现给您已安装的Windows编码列表。

您真正想要的编码在底部:

Unicode(无签名的UTF-8)-代码页65001

尽管如果您想要避免很多麻烦,您可能会选择靠近顶部的选项:

Unicode(带签名的UTF-8)-代码页65001

它们的区别在于后者会添加UTF-8签名(这只是用UTF-8编码的UTF-16字节序标记)。这是我非常不喜欢的一点,因为UTF-8没有多个字节顺序,所以BOM(字节顺序标记)最多是冗余的,在最坏的情况下会破坏所有种类的文本处理工具。微软公司使用它来“自动检测”UTF-8,因为对于单字节字符,UTF-8、ISO-8859-1和CP-1252除了MS基本上虚构的32个字符序列(0x80-0x9f)外都是相同的。

如果您只使用Visual Studio或.NET工具编辑或处理文件,则带签名保存可能会正常工作。如果您需要保存供其他工具(批处理文件、SQL查询、PHP脚本等)使用的文件,则签名会导致问题,您应该将它们保存为没有签名的格式。如果这样做,您可能需要启用选项(在“工具”->“选项”->“文本编辑器”下)来“自动检测没有签名的UTF-8编码”,否则右键单击文件并选择“使用...”打开,并选择说“ editor with Encoding”的编辑器选项。


2
我认为BOM被包含是为了让文本编辑器在只有ASCII字符存在时轻松确定文件是否应该被视为UTF-8。所以严格来说,我不认为它是多余的。如果你想谈论冗余,我认为UTF-32是一个好选择。 - Andrew Theken
1
如果您需要确定一个文件是否可以视为UTF-8处理,则有一种非常简单的方法:尝试将该文件解析为UTF-8。 UTF-8的属性是,非UTF-8文件也可能有效的概率非常小(当然,ASCII是UTF-8的子集)。 - Václav Slavík

10

我认为它会将文件保存在当前代码页中。在“工具”->“选项”->“环境”->“文档”下有一个选项,当无法保存在当前代码页时,它会将其保存为Unicode编码。但我不知道这是否有帮助...


1
它不起作用,你必须找到所有保存在GBK编码的文件,然后手动告诉VS2010将它们保存为UTF8编码。这些事情让我感到非常无聊。 - bronze man

9

我认为你想尝试使用带BOM的ForceUtf8 / 不带BOM的ForceUtf8扩展。

只需在VS扩展库(工具 -> 扩展和更新)中搜索UTF8即可。


使用这种方法时,转换是自动完成的吗?还是有手动转换每个文件的选项? - xzegga
它将在下一次文件保存时自动转换。 - Exsigth

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