Как предотвратить "svn diff" от генерации вывода Unicode в Windows - PullRequest
14 голосов
/ 19 июля 2010

На моем Windows-устройстве я попытался создать патч Subversion с помощью команды svn diff > my_patch.diff.Полученный файл был закодирован с использованием UTF-16, а не UTF-8 или ASCII, поэтому, когда я пытался использовать patch (из GnuWin32 ) для применения патча, он не работал.

Мне удалось преобразовать файл патча в UTF8, открыв его в Блокноте и сохранив в нужном формате, и patch после этого прекрасно обработал его.Но есть ли способ получить svn diff для генерации UTF8 в Windows?


Обновление: Как показывает мой ответ, оказывается, что проблема действительно не связана с Subversion, diff или patch.Это был PowerShell, который очень любезно конвертировал вывод в Unicode.Я оставляю вопрос как есть, чтобы кто-то с подобной проблемой мог наткнуться на него.

1 Ответ

16 голосов
/ 19 июля 2010

После долгих размышлений и экспериментов с различными утилитами diff я понял это:

Я запускал svn diff в командном окне PowerShell.Операторы перенаправления вывода PowerShell преобразуют вывод в Unicode .

Если я запускаю svn diff > my_patch.diff в оболочке cmd.exe, то все работает нормально.

Чтобы это работалов PowerShell нужно использовать такую ​​команду:

svn diff | out-file -encoding ascii my_patch.diff

Я уверен, что в Microsoft есть кто-то, кто думает, что это действительно потрясающее поведение.

...