使用.net core编码问题2

此代码在.net framework按预期工作,但在.net core 2

in.txt文件包含“Düsseldorf”

  • 在.net框架中,输出是“杜塞尔多夫”

  • 在.net核心中,输出是“D sseldorf”

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

 string infile = @"C:\in.txt", outFile = @"C:\out.txt"; var inStr = new StreamReader(infile, Encoding.Default); var outStr = new StreamWriter(outFile, false, Encoding.Default); while (!inStr.EndOfStream) { outStr.WriteLine(inStr.ReadLine()); } outStr.Flush(); inStr.Dispose(); outStr.Dispose(); 

任何想法为什么它不起作用?

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

编辑:然后尝试从.net框架打印编码详细信息(如名称)。 然后在.net核心中指定相同的内容2.不要依赖默认的核心。 此页面MSDN,代码示例中的编码列表包含受支持的编码列表。

由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);