如何更改Net Core控制台应用程序的默认代码页



如何更改Net Core控制台应用程序的默认编码?

我正在使用一个用编写的遗留库。Net框架,它需要读取windows-1251代码页中的文件,但不允许我将其指定为参数。唯一可用的选项是从文件中读取。

在不更改文件代码页的情况下,我认为使其工作的唯一方法是在操作过程中更改默认代码页。

我使用(From package System.Text.Encoding.CodePages(启用了代码页提供程序:

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

有线索吗?

找到了一个可能对其他人有用的解决方法。

在我的情况下,库不强制执行代码页,因此通过将文件转换为UTF8并编写BOM解决了问题。库现在可以正确读取文件中的任何字符。

此解决方案可能会增加大量IO,因此请小心使用。

var content = File.ReadAllText(Filename, Encoding.GetEncoding("windows-1252"));
File.WriteAllText(Filename, content, new UTF8Encoding(true)); //write back in UTF8  with BOM
... open 'filename' with the library

最新更新