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

Kri*_*son 14 svn powershell diff patch

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

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


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

Kri*_*son 17

经过多次头脑风暴和不同diff实用程序的试验后,我想出了这个:

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

如果我svn diff > my_patch.diffcmd.exeshell中运行,那么一切正常.

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

svn diff | out-file -encoding ascii my_patch.diff
Run Code Online (Sandbox Code Playgroud)

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