jwa*_*zko 8 visual-studio-2008 visual-studio
我在Visual Studio 2008中遇到文件编码问题.编译时我遇到了这样的错误:

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

通过defualt自动检测设置.当我将编码选项更改为UTF-8时,一切正常.如果我使用UTF-8编码打开项目中的每个有问题的文件,项目就会开始编译.问题是我有太多的文件,打开每个文件并将编码设置为UTF-8是荒谬的.有没有办法快速做到这一点?
我的VS设置是:

我正在使用Windows Server 2008 R2.
更新:
对于Hans Passant和Noah Richards.感谢您的互动.我最近改变了我的操作系统,所以一切都很新鲜.我还从源代码管理中下载了新的解决方案.
在操作系统区域设置中,我已将系统区域设置更改为波兰语(波兰):

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

问题仍未解决.
当我使用自动检测编码打开一些.cs文件,然后检查文件 - >高级保存选项...时,这些.cs文件中的一些有代码页1250:

但内部看起来如下:

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

我不明白这种不匹配.
所有其他文件都具有UTF-8编码:

并正确打开.我基本上不知道出了什么问题,因为据我所知,我的朋友有与我相同的选项,并且同一项目正确地为他编译.但到目前为止,他很高兴没有遇到编码问题.
带扬抑符的大写 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
Run Code Online (Sandbox Code Playgroud)
确保 BOM 文件的名称和原始文件的名称之间有一个 +。
在一两个文件上尝试一下,如果有效,您可以创建一些批处理文件来执行此操作。或者一个小型 C# 应用程序(因为您是 C# 程序员),它可以检测文件是否已经有 BOM,这样您就不会添加两次。当然,您几乎可以在任何东西中执行此操作,从 Perl 到 PowerShell 到 C++ :-)
| 归档时间: |
|
| 查看次数: |
13095 次 |
| 最近记录: |