.Net Core 3.1 - 编码过程输出
.Net Core 3.1 - Encoding process output
我有一个进程可以执行一些命令,例如 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 threw an exception of type
'System.NotSupportedException'
有没有我做错了什么或者我错过了什么?
编码提供程序不支持所有属性,例如。 G。 BodyName
。但是,在 Process
class.
中使用时它应该仍然可以正常工作
该进程可能使用了另一种编码,例如:
CultureInfo.CurrentCulture.TextInfo.OEMCodePage
我有一个进程可以执行一些命令,例如 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 threw an exception of type 'System.NotSupportedException'
有没有我做错了什么或者我错过了什么?
编码提供程序不支持所有属性,例如。 G。 BodyName
。但是,在 Process
class.
该进程可能使用了另一种编码,例如:
CultureInfo.CurrentCulture.TextInfo.OEMCodePage