Почему TortoiseHg считает Resource.h бинарным? - PullRequest
6 голосов
/ 07 октября 2011

Использование Visual Studio 2010. У меня есть файл resource.h, который TortoiseHg считает двоичным, поэтому он не отображает diff для него в окне фиксации. Я могу легко открыть файл в текстовом редакторе и увидеть, что это обычный текст.

Я видел связанный вопрос ( Почему Mercurial считает, что мои файлы SQL являются двоичными? ), который предполагает, что это связано с кодировкой файлов. Действительно, открытие файла в Notepad ++ говорит о том, что файл находится в «UCS-2 Little Endian». Как я могу это исправить? Я, очевидно, не хочу нарушать ожидания Visual Studio.

Ответы [ 2 ]

7 голосов
/ 07 октября 2011

Только для отображения, Mercurial обрабатывает все файлы, содержащие NUL байт , как двоичные из-за давнего соглашения UNIX. Это почти всегда верно ... за исключением UTF-16 (ранее известного как UCS-2) ... где половина вашего файла - NUL байтов!

Внутренне, Mercurial постоянно обрабатывает все файлы как двоичные, поэтому эта проблема актуальна только для таких вещей, как то, пытаемся ли мы отображать различия.

Итак, у вас есть два варианта:

  • игнорируй, Mercurial будет работать нормально
  • использовать кодировку, отличную от UTF-16

В некоторых веб-поисках по запросу "resource.h utf-16" предполагается, что VS2010 будет очень хорошо, если вы сохраните этот файл в UTF-8 или ASCII, что должно быть идеальным выбором для исходного кода на языке C.

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

5 голосов
/ 07 октября 2011

Попробуйте явно преобразовать / изменить кодировку в UTF-8 / ASCII и посмотреть.Вы можете сделать это из меню Encoding Notepad ++ (выберите «Кодировать в UTF-8»)

Visual Studio будет отлично работать с файлом UTF-8.

...