繁体   English   中英

非英语字符的怪异问题

[英]Weird issues with non-english characters

我有自动运行netsh的代码来检查防火墙规则:

var process = new Process
    {
        StartInfo =
        {
            FileName = fileName,
            Arguments = arguments,
            LoadUserProfile = true,
            RedirectStandardOutput = true,
            RedirectStandardError = true
        }
    };

        process.OutputDataReceived += (sendingProcess, outLine) => outputText.AppendLine(outLine.Data);
        process.ErrorDataReceived += (sendingProcess, errorLine) => errorText.AppendLine(errorLine.Data);
        output = outputText.ToString();
        errorOutput = errorText.ToString();
        //parse both outputs...

作为文件名,我有以下命令:

C:\Windows\System32\netsh.exe

以下是参数:

advfirewall firewall show rule name="rulename" dir=in

它通常可以正常工作,当输出包含非英语字符时,我会遇到问题。 它们全部替换为“?”,所以我认为这是编码问题,但看起来不是。

当我在cmd中手动运行相同的命令时,我得到的结果非常相同。 但是,如果我将字体从默认字体更改为consolas,则它会很好地显示非英语输出。 我该如何在代码中应用相同的修复程序,甚至可以完全做到这一点? 我搜索了一段时间,却一无所获,这表明我在这里可能做错了什么。

同样,编码似乎不是问题,因为cmd和powershell在正确更改字体后都会显示输出。 我尝试将StartInfo.StandardOutputEncoding设置为cmd中使用的相同编码,但没有任何变化-我仍然在输出中得到问号。 我想念什么?

编辑:尝试将StartInfo.StandardOutputEncoding设置为不同的值,包括cp866,koi8-r和Windows-1251-结果保持不变,仍然出现问号。

我正在尝试在Windows 2008 R2上以英语作为显示语言。

如果规则名称包含西里尔字母,那么您将需要使用将显示它们的输出控制台或编辑器来读取它们。

在PowerShell中,使用以下命令并在写字板或Word中编辑输出。

(New-object -comObject HNetCfg.FwPolicy2).Rules | ForEach-Object { $_.Name } >rules.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM