为什么TortoiseHg认为Resource.h是二进制的?

时间:2011-10-06 23:24:13

标签: visual-studio visual-c++ mercurial tortoisehg binaryfiles

使用Visual Studio 2010.我有一个TortoiseHg认为是二进制的resource.h文件,因此它不会在提交窗口中显示它的差异。我可以在文本编辑器中轻松打开文件,看到它是纯文本。

我看到了一个相关问题(Why does Mercurial think my SQL files are binary?),表明它与文件编码有关。确实在Notepad ++中打开文件说该文件位于“UCS-2 Little Endian”中。我怎样才能解决这个问题?显然,我不想打破一些Visual Studio的期望。

2 个答案:

答案 0 :(得分:7)

仅出于显示目的,由于长期的UNIX约定,Mercurial将包含NUL 字节的所有文件视为二进制文件。这几乎总是正确..除了UTF-16(以前称为UCS-2)..其中一半的文件是NUL字节!

在内部,Mercurial始终将所有文件视为二进制文件,因此此问题仅与我们是否尝试显示差异有关。

所以你有两个选择:

  • 忽略它,Mercurial会正常工作
  • 使用UTF-16以外的编码

有些搜索“resource.h utf-16”的网站表示,如果你用UTF-8或ASCII格式保存这个文件,VS2010会很好,这应该是C源代码的完美选择。

http://social.msdn.microsoft.com/Forums/en/vssetup/thread/aff0f96d-16e3-4801-a7a2-5032803c8d83

答案 1 :(得分:5)

尝试显式转换/更改编码为UTF-8 / ASCII并查看。您可以从Notepad ++的Encoding菜单(选择UTF-8中的编码)中执行此操作

Visual Studio可以正常使用UTF-8文件。