【问题标题】:Visual Studio encoding problemsVisual Studio 编码问题
【发布时间】:2013-04-18 05:57:35
【问题描述】:

我在 Visual Studio 2008 中的文件编码存在问题。编译时出现此类错误:

当我尝试打开发生特定错误的文件时,会出现编码窗口:

默认设置为自动检测。当我将编码选项更改为 UTF-8 时,一切正常。如果我使用 UTF-8 编码打开项目中的每个有问题的文件,项目就会开始编译。问题是我有太多文件,打开每个文件并将编码设置为 UTF-8 是荒谬的。有什么方法可以快速完成吗?

我的 VS 设置是:

我使用的是 Windows Server 2008 R2。

更新:

献给汉斯·帕桑特和诺亚·理查兹。感谢互动。我最近改变了我的操作系统,所以一切都是新鲜的。我还从源代码管理中下载了新的解决方案。

在操作系统区域设置中,我已将系统区域设置更改为波兰语(波兰):

在 VS 中,我已将国际设置更改为与 windows 相同:

问题还是没有解决。

当我使用自动检测编码打开一些 .cs 文件,然后检查 Files -> Advanced Save Options... 时,其中一些 .cs 文件的代码页为 1250:

但内部看起来如下:

它是有线的,因为当我在源代码管理中检查此类特定文件的属性时,它们似乎设置了 UTF-8 编码:

我不明白这种不匹配。

所有其他文件都有 UTF-8 编码:

并正确打开。我基本上不知道出了什么问题,因为据我所知,我的朋友设置了与我相同的选项,并且为他正确编译了相同的项目。但到目前为止,他很高兴没有遇到编码问题。

【问题讨论】:

  • 您不能拥有“太多文件”并且以前没有遇到过这个问题。发生了什么变化?你最近换过这台机器吗?系统代码页是否更改?这个项目是从 VS2005 导入的吗?更改为 gimpy SCCS?更好地记录您的问题。

标签: visual-studio visual-studio-2008


【解决方案1】:

带有抑扬符的大写 A 告诉我该文件是 UTF-8(如果您使用十六进制编辑器查看,您可能会看到字节是 C2 A0)。这是 UTF-8 中的不间断空格。

Visual Studio 未检测到编码,因为(很可能)文件中没有足够的高位 ASCII 字符来帮助进行可靠的检测。

此外,没有 BOM(字节顺序标记)。这将有助于检测(这是“带有签名的 UTF-8”描述中的“签名”)。

您可以做什么:将 BOM 添加到所有没有 BOM 的文件中。 如何添加?仅使用 BOM 制作文件(记事本中的空文件,另存为,选择 UTF-8 作为编码)。它将是 3 个字节长(EF BB BF)。 您可以在每个缺少 BOM 的文件的开头复制它:

   copy /b/v BOM.txt + YourFile.cs YourFile_Ok.cs
   ren YourFile.cs YourFile_Org.cs
   ren YourFile_Ok.cs YourFile.cs

确保 BOM 文件的名称和原始文件的名称之间有一个 +。

在一个或两个文件上尝试一下,如果可行,您可以创建一些批处理文件来执行此操作。 或者一个小的 C# 应用程序(因为你是 C# 程序员),它可以检测文件是否已经有 BOM,这样你就不会添加两次。当然,你几乎可以用任何东西来做到这一点,从 Perl 到 PowerShell 到 C++ :-)

【讨论】:

  • 谢谢你,很好的解决方案。我的朋友似乎仍然没有遇到这样的问题,因为我们都有相同的操作系统,相同的源文件(来自同一个 sc)而且我认为相同的设置。尽管如此,这个技巧对我有帮助,并且是对未来的一个很好的提示。问候。
【解决方案2】:

在以 UTF-8 模式打开文件后,是否可以尝试更改文件的高级保存选项并将其保存(如果您认为这些文件应该是 UTF-8,则以带签名的 UTF-8 格式保存)?

自动检测编码检测是尽力而为,因此文件中的某些内容可能导致它被检测为 UTF-8 以外的其他内容,例如文件的第一个千字节中只有 ASCII 字符,或具有指示文件不是 UTF-8 的 BOM。将文件重新保存为带有签名的 UTF-8 应该(希望)更正。

如果之后这种情况继续发生,请告诉我,我们可以尝试找出导致它们首先被创建/保存的原因。

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 2010-12-23
    • 2011-04-15
    • 2021-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多