【发布时间】: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