C# .NETCore2的编码问题

C# .NETCore2的编码问题,c#,.net,encoding,.net-core,C#,.net,Encoding,.net Core,此代码在.net framework中按预期工作,但在.net core2 .txt中的文件包含“Düsseldorf” 在.net框架中,输出为“Düsseldorf” 在.net内核中,输出为“D”�塞尔多夫“ (出于绝望,我已经尝试了所有其他编码……没有人能工作) 你知道为什么它不起作用吗 根据官方的说法,默认编码不是固定的——它取决于操作系统的设置。如果您知道文件的编码,请指定它 编辑: 然后尝试打印.NETFramework中有效的编码详细信息(如名称)。然后在.net core

此代码在
.net framework
中按预期工作,但在
.net core2

.txt中的文件包含“Düsseldorf”

  • 在.net框架中,输出为“Düsseldorf”

  • 在.net内核中,输出为“D”�塞尔多夫“

(出于绝望,我已经尝试了所有其他编码……没有人能工作)

你知道为什么它不起作用吗

根据官方的说法,默认编码不是固定的——它取决于操作系统的设置。如果您知道文件的编码,请指定它

编辑: 然后尝试打印.NETFramework中有效的编码详细信息(如名称)。然后在.net core 2中指定相同的。不要依赖默认值。此页面包含支持的编码列表

由gsharp更新: 我必须引用NuGet包
System.Text.Encoding.CodePages
,注册它们并使用它

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

 var enc1252 = Encoding.GetEncoding(1252);

 var inStr = new StreamReader(infile, enc1252);
 var outStr = new StreamWriter(outFile, false, enc1252);

请随问题附上文件(如果可能,请将其截断)。NET Core通常默认为UTF-8,但是.NET Core 2.0默认启用了代码页支持,这可能会在以前的版本中导致类似的问题。您为我指出了正确的方向。将用我的发现编辑你的答案。我有一个类似的问题,这解决了它。CORE默认为UTF-8,但我以前的4.6.2解决方案中的代码默认为Win-1252。也可以这样调用包:
var enc1252=CodePagesEncodingProvider.Instance.GetEncoding(1252)
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

 var enc1252 = Encoding.GetEncoding(1252);

 var inStr = new StreamReader(infile, enc1252);
 var outStr = new StreamWriter(outFile, false, enc1252);