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

Use*_*ser 6 mercurial binaryfiles tortoisehg visual-studio visual-c++

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

我看到了一个相关的问题(为什么Mercurial认为我的SQL文件是二进制文件?)这表明它与文件编码有关.确实在Notepad ++中打开文件说该文件位于"UCS-2 Little Endian"中.我怎样才能解决这个问题?显然,我不想打破一些Visual Studio的期望.

mpm*_*mpm 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


man*_*lds 5

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

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