如何防止“svn diff”在Windows上生成Unicode输出

时间:2010-07-19 14:08:45

标签: svn powershell diff patch

在我的Windows框中,我尝试使用命令svn diff > my_patch.diff创建Subversion补丁。生成的文件使用UTF-16而不是UTF-8或ASCII进行编码,因此当我尝试使用patch(来自GnuWin32)来应用补丁时,它不起作用。

我能够通过在记事本中打开它并将其保存为所需的格式,将补丁文件转换为UTF8,然后patch处理好了。但是,有没有办法让svn diff在Windows上生成UTF8?


更新:正如我的回答所示,事实证明问题与Subversion,diffpatch无关。 PowerShell是非常有用的将输出转换为Unicode。我将问题保留原样,以便有类似问题的人可能偶然发现它。

1 个答案:

答案 0 :(得分:14)

经过多次抓挠并尝试使用不同的diff实用程序后,我想出了这个:

我在PowerShell命令窗口中运行svn diff。 PowerShell的输出重定向运算符将输出转换为Unicode

如果我在svn diff > my_patch.diff shell中运行cmd.exe,那么一切正常。

要在PowerShell中使用此功能,必须使用如下命令:

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

我确信微软有人认为这种行为真的很棒。