【问题标题】:.Net Core 3.1 - Encoding process output.Net Core 3.1 - 编码过程输出
【发布时间】:2020-07-08 06:30:16
【问题描述】:

我有一个进程可以执行一些命令,比如 ping。输出给了我法语的结果,但编码不好。 例如,我得到

Envoi d'une requˆte 'ping'

而不是

Envoi d'une requête 'ping'

我了解到有些编码在 .Net Core 中不可用,但可以通过 Encoding.CodePage 库添加。所以我在我的项目中尝试了它。

我开始在 App.xaml.cs 中添加:

private void ConfigureServices(IServiceCollection serviceCollection)
{
   Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}

然后在我管理流程的函数中,我得到了良好的编码:

var enc1252 = Encoding.GetEncoding(1252);
process.StartInfo.StandardOutputEncoding = enc1252;

但是它不起作用,输出结果是相同的,当我检查对象“enc1252”时,我可以在属性中看到许多错误,例如:

enc1252.BodyName 引发类型异常 'System.NotSupportedException'

是不是我做错了什么或错过了什么?

【问题讨论】:

  • 编码提供程序不支持所有属性,例如 BodyName。这不是问题,在 Process 类中使用时它可以正常工作。也许您的流程使用了另一种编码?尝试 CultureInfo.CurrentCulture.TextInfo.OEMCodePage。其他常用的代码页是 437 和 850。
  • 也许问题不在于编码,而在于显示文本的字体。你试过不同的字体吗?
  • @pschill 它适用于cultureInfo。感谢您的帮助!

标签: c# encoding .net-core-3.1


【解决方案1】:

编码提供程序不支持所有属性,例如。 G。 BodyName。但是,在 Process 类中使用时,它应该仍然可以正常工作。

该进程可能使用了另一种编码,例如:

CultureInfo.CurrentCulture.TextInfo.OEMCodePage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多