SVN状态PowerShell非ASCII字符问题

问题描述 投票:0回答:1
$svnOutput = svn status Write-Host "Output when saved in a variable" $svnOutput Write-Host "Direct Output" svn status

如果我运行此脚本(在PowerShell-Console中),我会得到两个不同的输出,如果其中一个文件的名称中具有非ASCII-Character(在我的示例中,例如Umlauts,例如Umlauts)。这是输出

    Output when saved in a variable
    ?    Test_äöü.txt
    Direct Output
    ?    Test_���.txt
我正在使用VisualSVNServer版本5.4.1的Windows Server 2022工作。我已经测试了以下想法:

chcp 65001 $svnOutput = svn status $svnOutput $OutputEncoding = [System.Text.Encoding]::UTF8 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $svnOutput = svn status $svnOutput $svnOutput = & svn status | Out-String -Stream $svnOutput svn status > svn_status.txt $svnOutput = Get-Content -Path "svn_status.txt" -Encoding UTF8 $svnOutput $svnOutput = & svn status | Out-String -Stream $svnOutput
但所有这些都会出现相同的错误。

PS:这也与其他命令一样发生了

$svnOutput = svn add . --force $svnOutput
导致:

A Test_���.txt

typing
svn add . --force
在PowerShell实例中,甚至我的脚本也无问题。希望有人可以在这里帮助我 - 谢谢!

	
您应该将编码的PowerShell控制台设置为SVN期望的编码。在大多数情况下,这将是系统的默认编码,但是您也可以与其他一些人进行测试。

$OutputEncoding = [System.Text.Encoding]::GetEncoding(1252) [Console]::OutputEncoding = $OutputEncoding $svnOutput = svn status Write-Host "Output when saved in a variable" $svnOutput Write-Host "Direct Output" svn status


powershell svn utf-8
1个回答
1
投票
:此行明确将

$OutputEncoding

设置为Windows-1252编码,该编码将用于解释命令的输出。
[Console]::OutputEncoding = $OutputEncoding
    :此行将编码的控制台输出设置为
  • $OutputEncoding
    ,因此PowerShell终端可以正确显示字符。
    
    当捕获
    $svnOutput = svn status
    时,PowerShell现在使用SVN的编码来解释SVN的字节。
  • 
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.